Ember.js 在EmberJS中对列表进行排序并在视图中反映
我有一个计算属性,它应该像这样进行排序和筛选:Ember.js 在EmberJS中对列表进行排序并在视图中反映,ember.js,Ember.js,我有一个计算属性,它应该像这样进行排序和筛选: sortedFilteredChildren: function() { console.log("sortedFilteredChildren()"); var filtered = this.get("children").filterProperty("archived",false); var sorted = filtered.slice().sort(function(a,b){
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);
知道我做错了什么吗?终于明白了 我认为@each应用于返回值。即,如果返回值中对象的任何订单属性发生更改,则重新计算 但这是不正确的@每个应用于计算属性所在的对象 所以要做我需要的,我必须做一个“children.@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(),