我有一个应该排序的计算属性&像这样的人:
sortedFilteredChildren: function() {
console.log("sortedFilteredChildren()");
var filtered = this.get("children").filterProperty("archived",false);
var sorted = filtered.slice().sort(function(a,b){
return a.get("order") - b.get("order");
});
return sorted;
}.property("@each.order","@each.parent_id","EpicApp.filterOptions.viewArchived").cacheable(),
我正在使用该属性作为CollectionView的数据源
如果我更改其中一个孩子的order属性,则不会重新评估此属性。换句话说,在执行:
之后,我看不到console.log行child.set("order",10);
知道我做错了吗?
答案 0 :(得分:4)
最后想出来......
我认为@each已应用于返回的值。即,如果返回值中对象的任何订单属性发生变化,则重新评估。
但不正确。 @each适用于计算属性所在的对象。
所以为了做我需要的,我必须做一个“孩子。@ each.order”
sortedFilteredChildren: function() {
console.log("sortedFilteredChildren()");
var filtered = this.get("children").filterProperty("archived",false);
var sorted = filtered.slice().sort(function(a,b){
return a.get("order") - b.get("order");
});
return sorted;
}.property("children.@each.order","children.@each.parent_id","EpicApp.filterOptions.viewArchived").cacheable(),