我注意到Backbone / Marionette有些奇怪。当我创建一个具有新集合属性的视图实例时,我创建了一个视图的另一个实例,它是一个新实例,但集合属性指向第一个视图的实例。见这里:
var CollectionView = Marionette.CollectionView.extend({
collection: new Backbone.Collection()
});
var view = new CollectionView();
console.log('view is ', view);
view.collection.searchTerm = 'test';
console.log('view.collection is ', view.collection);
this.region.show(view);
var view2 = new CollectionView();
console.log('view2 is ', view2);
console.log('view2.collection is ', view2.collection);
this.region.show(view2);
您可以在日志中看到,有2个不同的视图实例(一个有cid:“view2”,另一个有cid:“view5”)。但是第二个视图的collection属性具有属性searchTerm
,即'test'。我本以为这是一个新的Backbone系列....
Codepen是here。
答案 0 :(得分:3)
这是预期的行为。
只有在您拨打extend
时才会创建一次收藏。所有实例在collection
原型中都有CollectionView
引用。
如果您希望每次都使用新集合实例化视图,只需创建initialize
方法:
var CollectionView = Marionette.CollectionView.extend({
initialize: function () {
this.collection = new Backbone.Collection();
}
});
var view = new CollectionView();
console.log('view is ', view);
view.collection.searchTerm = 'test';
console.log('view.collection is ', view.collection);
this.region.show(view);
var view2 = new CollectionView();
console.log('view2 is ', view2);
console.log('view2.collection is ', view2.collection);
this.region.show(view2);