Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何将多个模型/集合添加到主干视图?_Backbone.js - Fatal编程技术网

Backbone.js 如何将多个模型/集合添加到主干视图?

Backbone.js 如何将多个模型/集合添加到主干视图?,backbone.js,Backbone.js,将集合添加到视图时,如下所示: var View = new MyCollectionView({ collection: new MyCollection() }); new View({collection: c}) new View({collection: c, secondCollection: c2}) 一切都很好。我可以在initialize方法中使用此集合(例如,对于绑定事件)。但是我怎样才能再加一个呢 我不能这样做: var View = new MyCollection

将集合添加到视图时,如下所示:

var View = new MyCollectionView({ collection: new MyCollection() });
new View({collection: c})
new View({collection: c, secondCollection: c2})
一切都很好。我可以在
initialize
方法中使用此集合(例如,对于绑定事件)。但是我怎样才能再加一个呢

我不能这样做:

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

构造函数/初始化
新视图([options])

有几个特殊选项,如果传递,将直接附加到视图:
模型
集合
el
id
类名
标记名
属性
事件

因此,如果创建如下视图:

var View = new MyCollectionView({ collection: new MyCollection() });
new View({collection: c})
new View({collection: c, secondCollection: c2})
然后主干将自动将
c
分配给视图的
this.collection
。但如果您创建如下视图:

var View = new MyCollectionView({ collection: new MyCollection() });
new View({collection: c})
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()
});
假设您的
MyCollectionView
有一个
initialize
方法,该方法知道将
secondCollection
从其
options
参数中拉出

打开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});

演示:

非常感谢<代码>这个。选项真的是我需要的!