我有一个代表模态的视图。此视图具有一些属性,如页脚额外类。 我遇到了麻烦,当某个模态更改了它的值时,它们都会收到相同的属性。
这是一个例子:
var ModalView = AlertingView.extend({
className : "modal",
paramsTemplate: { footerClass: "" }
});
之后,我使用了具有更改属性的模态。
SpecialModal = ModalView.extends({
initialize: function() {
this.paramsTemplate.footerClass = "white";
}
})
因此,如果我实例化普通模态,则设置此参数! :'(
NormalModal = ModalView.extends({
initialize: function() {
console.log(this.paramsTemplate.footerClass);//shows 'white'!
}
})
你知道如何解决它吗? 谢谢!
答案 0 :(得分:1)
这个小提示演示了你的问题。
只要您没有为SpecialModal
的每个实例都创建NormalModal
的任何实例。
这是因为paramsTemplate
是一个类变量,而不是一个实例变量。一旦创建了SpecialModal
的实例,它就会更新classVariable,因此所有对象都会反映出这种变化。
幸运的是,我几天前就遇到过类似问题Backbone.js view instance variables?
解决方案:
var ModalView = Backbone.View.extend({
className : "modal",
initialize:function(){
this.paramsTemplate= { footerClass: "" } ;
}
});
SpecialModal = ModalView.extend({
initialize: function() {
ModalView.prototype.initialize.call(this);
this.paramsTemplate.footerClass = "white";
console.log(this.paramsTemplate.footerClass);
}
})
NormalModal = ModalView.extend({
initialize: function() {
ModalView.prototype.initialize.call(this);
console.log(this.paramsTemplate.footerClass);
}
})