2012-02-01 92 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