在我的Backbone视图中,我正在设置tagname,classname,temp value ..除了classname之外,所有这些都正常工作..
我如何设置classname ..或者我的代码有什么错误..
define(["singleton","listCollection","listModel"],function(singleton,collection,listModel){
singleton.view = Backbone.View.extend({
tagName :'article',
className :'indBoard',
projectName : true,
template0 : _.template($('#listTemplate').html()),
template1 : _.template($('#boardTemplate').html()),
initialize :function(options){
this.template = this['template'+options.tempNo];
this.tagName = options.tagName;
//i am changing to 'li' works
this.className = options.cName;
//changing to new class name not working
console.log(options.cName);//consoles new class name properly
this.projectName = options.subTempNo == 0 ?true:false;
//condition as well works..
},
render:function(){
var temp = this.template;
this.$el.html(temp(this.model.toJSON()));
return this;
}
});
return singleton.view;
});
答案 0 :(得分:4)
如果您在创建视图实例而不是options.className
时设置了options.cName
,则无需尝试在initialize
中设置它(对于tagName也是如此)。< / p>
尝试这样的事情:
var view = new singleton.view({className: 'someClass'});
className
是Backbone在视图创建过程中寻找的特殊选项之一。
// List of view options to be merged as properties.
var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];
实际上,我认为tagName
对您有用的原因是因为它被Backbone合并,而不是因为您在initialize
中进行了设置。