我有一个ArrayController,我在其中显示由'group'过滤的2组对象。当我编辑一个人时,我可以使用Ember选择更改他们的组,我可以看到列表中的组已更改,但问题是如何通知父ArrayController它需要重新应用过滤器并重新呈现{ {#each}}块?
这是一个显示问题的JSBin。 http://jsbin.com/ISIKAjOZ/5/edit
要在JSBin中查看此内容,请单击其中一个人并使用下拉列表更改其组。您会看到他们的组号更新,但他们需要从一个列表移动到另一个列表...
答案 0 :(得分:3)
依赖项(在属性中)应告诉ember什么时候要知道属性是否脏,应该重新计算。
group1:function() {
return this.get("content").reduce(function (arr, object, index) {
if(object.get("group") === 1) {
arr.pushObject(object);
}
return arr;
}, Em.A());
}.property("content.@each.group"),
http://jsbin.com/iBaCOrOt/1/edit
http://emberjs.com/guides/object-model/computed-properties-and-aggregate-data/
顺便说一下
group1:function() {
return this.get("content").filterBy('group', 1);
}.property("content.@each.group"),