2012-11-11 31 views
0

我有代表一棵樹的集合。每個模型都具有從服務器變爲id的父屬性。重置收集數據後,每個模型必須在集合中找到其父項,並將參考設置爲屬性而不是普通ID。之後,必須有一個由集合觸發的事件,它已準備好進行渲染。在每個模型的設置邏輯之後觸發集合「就緒」事件

var node = Backbone.Model.extend({ 
    initialize: function(){ 
     //reset event fired after all models are in collection, 
     //so we can setup relations 
     this.collection.on('reset', this.setup, this); 
    }, 
    setup: function(){ 
     this.set('parent', this.collection.get(this.get('parent'))); 
     this.trigger('ready', this);//-->to collection event aggregator? 
    } 
}); 
var tree = Backbone.Collection.extend({model: node}) 

是否有任何干淨的方式看到所有使用其設置完成的模型?或者我必須在集合中編寫自定義事件聚合器?

回答

0

其實,你想要的是綁定reset事件Collection而不是Model

var Node = Backbone.Model.extend({ 

}), 

Tree = Backbone.Collection.extend({ 
    model: Node, 
    initialize: function() { 
     this.on('reset', this.setup, this); 
    }, 
    setup: function() { 
     this.each(this.updateModel, this); 
     //Here you have all your models setup 
    }, 
    updateModel: function(m) { 
     m.set({ 
      parent: this.get(m.get('parent')); 
     }); 
    } 
}) 
相關問題