我有这样的事情:
Epic = Ember.Object.extend({
children:[],
children_filtered: function(){
return this.get("children").filterProperty("archived",false);
}.property("children"),
init: function() {
this._super();
this.set("children", Ember.ArrayController.create({content:[]}) );
this.set("stories", Ember.ArrayController.create({content:[]}) );
},
});
Run Code Online (Sandbox Code Playgroud)
注意children_filtered计算属性.
如果我在视图中使用children_filtered ...
{{#each content.children_filtered }}
hi
{{/each}}
Run Code Online (Sandbox Code Playgroud)
我的应用程序挂起cpu @ 100%
我有什么想法我做错了吗?对于具有项目列表和过滤项目列表的对象,是否有更好的模式?
ebr*_*ryn 12
您的问题是您需要将计算属性设置为cacheable.否则,在每次迭代时重新计算其值#each.有关是否cacheable应该是所有计算属性的默认值的讨论.
children_filtered: function(){
return this.get("children").filterProperty("archived",false);
}.property("children").cacheable()
Run Code Online (Sandbox Code Playgroud)
这是一个jsFiddle示例:http://jsfiddle.net/ebryn/9ZKSY/