我有一个代表模式的视图。该视图有一些属性,例如页脚额外类。
我遇到一个问题,当某些模式改变它的值时,所有模式都会收到相同的属性。
这是例子:
var ModalView = AlertingView.extend({
className : "modal",
paramsTemplate: { footerClass: "" }
});
之后,我使用了具有更改属性的模态。
SpecialModal = ModalView.extends({
initialize: function() {
this.paramsTemplate.footerClass = "white";
}
})
所以,如果我实例化一个普通的 Modal,这个参数就被设置了! :'(
NormalModal = ModalView.extends({
initialize: function() {
console.log(this.paramsTemplate.footerClass);//shows 'white'!
}
})
您知道如何解决吗?
谢谢!
http://jsfiddle.net/JQu5Q/11/ http://jsfiddle.net/JQu5Q/11/
这个小提琴说明了你的问题。
只要您还没有创建任何实例SpecialModal
每个实例NormalModal
works.
这是因为paramsTemplate
是类变量,而不是实例变量。一旦有一个实例SpecialModal
创建后,它会更新 classVariable,因此所有对象都会反映该更改。
幸运的是,几天前我刚刚遇到了类似的问题Backbone.js 查看实例变量? https://stackoverflow.com/questions/7630652/backbone-js-view-instance-variables/7630731#7630731
解决方案 :
http://jsfiddle.net/JQu5Q/12/ http://jsfiddle.net/JQu5Q/12/
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);
}
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)