2012-01-22 16 views
5

मैं एक गणना संपत्ति कि इतने तरह & fiter सॉर्ट चाहिए में प्रतिबिंबित होने:EmberJS में एक सूची क्रमबद्ध करने और उस दृश्य

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

के डेटा स्रोत के रूप कि संपत्ति का उपयोग कर रहा

यदि मैं अपने बच्चों में से किसी एक की ऑर्डर संपत्ति बदलता हूं, तो इस संपत्ति का फिर से मूल्यांकन नहीं होता है। दूसरे शब्दों में, मुझे नहीं लगता कि कंसोल.लॉग लाइन एक ऐसा करने के बाद दिखाई देती है:

child.set("order",10); 

कोई विचार क्या मैं गलत कर रहा हूं?

उत्तर

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("[email protected]","[email protected]_id","EpicApp.filterOptions.viewArchived").cacheable(),  
संबंधित मुद्दे