2012-02-01 143 views
0

當我添加收集到的觀點是這樣的:如何將多個模型/集合添加到主幹視圖?

var View = new MyCollectionView({ collection: new MyCollection() }); 

一切都好。我可以在initialize方法中使用此集合(例如,用於綁定事件)。但是,我怎樣才能添加另一個?

我不能做到這一點的方法:

var View = new MyCollectionView({ 
    collection: new MyCollection(), 
    secondCollection: new MySecondCollection() 
}); 

回答

7

fine manual

構造函數/初始化new View([options])

有幾個特殊選項,如果獲得通過,將直接附在視圖上:model,collection,el,id,classNametagName,attributesevents

所以,如果你創建這樣一個觀點:

new View({collection: c}) 

然後骨幹將自動分配給c視圖的this.collection。但是,如果你創建一個這樣的觀點:

new View({collection: c, secondCollection: c2}) 

然後在視圖的構造函數中:

initialize: function(options) { 
    // this.collection will be 'c' from above 
    // options.secondCollection will be 'c2' 
} 

所以,你可以這樣做:

var View = new MyCollectionView({ 
    collection: new MyCollection(), 
    secondCollection: new MySecondCollection() 
}); 

前提是你的MyCollectionViewinitialize方法知道從options參數中拉出secondCollection

打開JavaScript控制檯以及在什麼這樣做看看:

var V = Backbone.View.extend({ 
    initialize: function(options) { 
     var c1 = options.collection; 
     var c2 = options.secondCollection; 
     console.log(this.collection); 
     console.log(c1); 
     console.log(c2); 
    } 
}); 
var view = new V({collection: 1, secondCollection: 2}); 

演示:http://jsfiddle.net/ambiguous/XyeSD/

+0

非常感謝! 'this.options'確實是我需要的! – ValeriiVasin 2012-02-01 11:07:32