新的骨干实例属性指向旧的实例属性
New Backbone instance property pointing to old instance property
我注意到Backbone/木偶有些奇怪。当我创建一个具有新集合属性的视图实例时,然后我创建视图的另一个实例,它是一个新实例,但集合属性指向第一个视图的实例。在这里看到的:
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")。但是第二个视图的集合属性有一个属性searchTerm
是test。我希望这是一个新的主干集合....
Codepen在这里
这是预期的行为。
Collection只在调用extend
时创建一次。所有实例在CollectionView
的原型中都有collection
的引用。
如果你想让你的视图实例化与新的集合,只需创建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);
相关文章:
- 为什么属性存在于对象实例上,即使其原型发生了更改
- 为什么函数对象的实例没有继承函数原型属性
- 实例化一个javascript对象并在一行中填充其属性
- Backbone.Model.extend不创建实例属性
- 在定义了构造函数之后,是否可以将实例属性添加到JavaScript原型中
- 如何将占位符属性添加到 CKEditor 的实例
- 从原型方法更改实例属性
- 为下一次实例化设置的主干视图属性
- 如何将可拖动属性分配给所有实例
- 在 JavaScript 中按属性查找类实例
- 通过构造函数属性和运算符实例设置继承
- 在 IIFE 中使用实例属性
- 为什么 PrototypeJS 类实例共享相同的属性
- 在 ES6 中,允许解构类实例属性
- 在 ES6 中自动将参数设置为实例属性
- 如何将自定义属性添加到 HTML 环境,该属性将默认为元素的每个新实例上的空对象
- 用父属性实例化子类的Javascript
- 不使用"new"访问原型属性实例化函数对象
- 在JavaScript中,如何访问超类的属性'实例
- 使用可选属性实例化类的正确方法