gpt4 book ai didi

javascript - Ember.JS - 无法根据计算属性进行过滤或过滤

转载 作者:行者123 更新时间:2023-11-29 21:53:31 25 4
gpt4 key购买 nike

我正在尝试使用 filterBy 和条件“isRoot”== true 来过滤 hasMany-Array async-get 的结果。 “isRoot”属性是一个计算属性,似乎 ember 的 filterBy 函数不会等待 promise 解析。这是我的代码:

目录模型

App.Directory = DS.Model.extend(App.ModelEventHandler, {
name: DS.attr('string', {defaultValue: ''}),
users: DS.hasMany('user', {async: true}),
isRootOfShare: DS.attr('boolean', {defaultValue: false}),
directories: DS.hasMany('directory', {async: true, inverse: 'directory'}),
directory: DS.belongsTo('directory', {async: true, inverse: 'directories'}),
shares: DS.hasMany('share', {async: true}),
files: DS.hasMany('file', {async: true}),
isRoot: function () {
var directoryPromise = this.get('directory');
return directoryPromise.then(function (directory) {
var isRoot = directory === null;
return isRoot;
}.bind(this));
}.property('directory')}

用户模型

App.User = DS.Model.extend(App.ModelEventHandler, {
// Attributes begin
email: DS.attr('string'),
isCurrentUser: DS.attr('boolean', {defaultValue: false}),
// Relationships
directories: DS.hasMany('directory', {async: true}),
shares: DS.hasMany('share', {async: true}) }

我用来过滤目录的语句:

user.get('directories').then(function (directories) {
//TODO: Fix isRoot
var filteredDirectories = directories.filterBy('isRoot', true);
return filteredDirectories;
});

这里有人知道我的问题的解决方案吗?提前致谢!

更新

我制作了一个 JSBIN,显示了我当前的问题。这里是链接 JSBIN link to my example

最佳答案

我自己想出了一个解决方案。我正在使用 Ember.computed.equal 而不是计算属性。这里是部分代码

isRoot: Ember.computed.equal('directory.content', null),

工作 jsbin 示例 http://jsbin.com/kiwujohefa/1/edit?js,output .

有人知道计算属性和 ember.computed.equal 之间的技术区别是什么吗?我认为在引擎盖下它们的工作方式相同只是 ember.computed.equal 提供了特定的功能,例如这里等于?

关于javascript - Ember.JS - 无法根据计算属性进行过滤或过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27711649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com