我有一个控制器,它使用content
作为基础,然后有另一个名为items
的变量,它是内容的过滤版本。更新items
时应更新content
。我试着在我的控制器中做这样的事情:
updateItems: function() {
var items = this.get('content').filter(this.get('toggleFilter'));
this.set('items', items);
}.observes('toggleFilter', 'content'),
这很好用,除了第一次加载。首次浏览页面时,项目为空。我收集这是因为在setupController中它被设置为content
,它仍然在等待信息。
我注意到将观察值设置为content.length
会使其正常工作。但是,这并不理想,部分原因是在加载数据时将为每个插入调用updateItems
方法,并且因为内容可能会更改,但长度可能保持不变。有更好的方法吗?
答案 0 :(得分:2)
@each
正是您要找的
updateItems: function() {
var items = this.get('content').filter(this.get('toggleFilter'));
this.set('items', items);
}.observes('toggleFilter', 'content.@each'),
此外,您可以使用计算属性,如下所示
items: function(){
return this.get('content').filter(this.get('toggleFilter'));
}.property('content.@each', 'toggleFilter')
isLoaded
之后
items: function(){
return this.get('content').filter(this.get('toggleFilter'));
}.property('content.isLoaded', 'toggleFilter')