1

在我的 Backbone 视图中,我正在设置标记名、类名、临时值。除了类名之外,所有这些都可以正常工作。

我如何设置类名..或者我的代码有什么错误..

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;
});
4

1 回答 1

4

如果您options.className在创建视图实例时设置而不是options.cName,则不需要尝试initialize像那样设置它(对于 tagName 也是如此)。

尝试这样的事情:

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.

于 2013-02-07T05:56:57.910 回答