2012-01-22 10 views
5

mam właściwość komputerowej, która powinna uporządkować & fiter tak:Sortowanie listy w EmberJS i posiadające że odzwierciedlają w widoku

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(),  

Używam tej nieruchomości jako źródło danych o CollectionView

Jeśli zmienię właściwość zamówienia jednego z jej elementów podrzędnych, ta właściwość nie zostanie ponownie oceniona. Innymi słowy, nie widzę linii console.log wyświetlanej po zrobieniu:

child.set("order",10); 

Jakieś pojęcie, co robię źle?

Odpowiedz

4

Wreszcie zdobione ten ...

Myślałem @Za stosowane do zwracanej wartości. tj. jeśli jakakolwiek z właściwości zamówienia na obiektach w wartości zwracanej zmienił się, a następnie ponownie ocenić.

Ale to jest nieprawidłowa. @each dotyczy obiektu, w którym włączona jest obliczona właściwość.

więc robić to, co potrzebne, musiałem zrobić "dzieci. @ 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("[email protected]","[email protected]_id","EpicApp.filterOptions.viewArchived").cacheable(),