海蘭和感謝閱讀:emberjs刷新ArrayController與arrangedContent和@each崩潰
我有Ember.ArrayController和arrangedContent的問題。該senario如下:
我的arrayController中的項目可以通過一些操作進行修改。 我的arrangeContent在某些項目屬性上被過濾。 因此,如果觀察到的項目屬性變化arrangedContent屬性應該被刷新
所有設置我arrangedContent的property()
實現這一工作正常,但如果我嘗試刷新來自路徑模型我然後得到錯誤信息TypeError: Cannot read property 'destroy' of undefined at ContainerView.extend.arrayWillChange
在某些情況下,它會工作,但每次都重複內容的刷新()被觸發
一些最少的代碼可能變得更加清晰...
App.IndexRoute = Ember.Route.extend({
model : function(){
return [App.Cars.create({color : "red", model : "march"}),
App.Cars.create({color : "yellow", model : "alto"}),
App.Cars.create({color : "blue", model : "gundam"}) ];
},
actions : {
reload : function(){
this.refresh();
}
}
});
App.IndexController = Ember.ArrayController.extend({
arrangedContent : function(){
var data= this.get("content");
data=data.filter(function(elem){
return elem.get("color").match(new RegExp("el","gi"))!==null;
});
return data;
}.property("lenght","[email protected]"),
actions : {
allYell :function(){
this.get("content").forEach(function(elem){
elem.set("color","yellow");
});
},
erase : function(){
if(this.get("length")>0){
this.get("content").removeAt(0);
}
}
}
});
一個JSBin可以在這裏http://jsbin.com/yebopobetu/3/edit?html,js,console,output
那麼從燼DOC:_The陣列,代理僞裝成。在默認的ArrayProxy實現中,這和內容是一樣的。 ArrayProxy的子類可以覆蓋此屬性以提供排序和過濾等功能._ – MrVinz 2014-12-07 06:38:41
它在可排序的mixin中被覆蓋,它沒有提到覆蓋會正常工作。 – Kingpin2k 2014-12-07 07:11:27
爲了處理先前發生的任何其他潛在覆蓋,我可以用data = this._super()替換data = this.get(「content」):) – MrVinz 2014-12-08 02:17:57