2013-02-07 50 views
1

在我的骨幹視圖,我設置標記名,類名,溫度值..都是從作品類名天晴..如何分配視圖元素在不同的類名

我如何設定該類..或什麼是對我的代碼錯誤..

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

如果設置options.className當您創建視圖實例,而不是options.cName,你並不需要去嘗試將其設置在initialize這樣(同一標記名)。

嘗試這樣代替:

var view = new singleton.view({className: 'someClass'});

className是那個骨幹查找視圖創建過程中特殊的選項之一。

Backbone source

// List of view options to be merged as properties. 
var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events']; 

其實我覺得tagName是爲你工作的原因是因爲它被合併了由骨幹,而不是因爲你是在initialize設置它。

+0

是的,你的100%正確。作品根據你的建議找到。 – 3gwebtrain

相關問題