2012-01-22 6 views
5

tengo una propiedad calculada que debe ordenar & fiter así:ordenar una lista en EmberJS y tener que reflejan en la vista

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

estoy usando esa propiedad como origen de datos de un CollectionView

Si cambio la propiedad de pedido de uno de sus hijos, esta propiedad no se vuelve a evaluar. En otras palabras, no veo la línea console.log aparece después de hacer un:

child.set("order",10); 

Alguna idea de lo que estoy haciendo mal?

Respuesta

4

Finalmente dado cuenta de esto ...

pensé @Cada aplica al valor devuelto. es decir, si alguna de las propiedades de orden en los objetos en el valor de retorno cambió, se vuelve a evaluar.

Pero eso es incorrecto. @each se aplica al objeto en el que está activada la propiedad calculada.

Así que para hacer lo que necesitaba, que tenía que hacer unos "niños. @ 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(),  
Cuestiones relacionadas