如何在Backbone View中添加多个模型/集合?

时间:2012-02-01 07:32:35

标签: backbone.js

当我像这样向视图添加集合时:

var View = new MyCollectionView({ collection: new MyCollection() });
一切都很好。我可以在initialize方法中使用此集合(例如,用于绑定事件)。但是我该如何添加另一个呢?

我不能这样做:

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

1 个答案:

答案 0 :(得分:7)

来自fine manual

  

构造函数/初始化 new View([options])

     

有几个特殊选项,如果通过,将直接附加到视图:modelcollectionelidclassNametagNameattributesevents

所以,如果你创建一个这样的视图:

new View({collection: c})

然后Backbone会自动将c分配给视图的this.collection。但是如果你创建这样的视图:

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

然后在View的构造函数中:

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方法知道将secondCollectionoptions参数中拉出来。

打开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/