2011-06-27 47 views
1

請說一下,在默認值(如name:'dflt name')上聲明屬性和聲明外部默認屬性(如name:'name支柱')。另外在初始化函數中,當我試圖改變道具值不變時(比如this.name =「Mr。」+ this.name;)。請參閱下面的代碼。骨幹:默認屬性和選項散列中定義的屬性之間的區別

$(document).ready(function(){     
     arrModel = Backbone.Model.extend({ 
      defaults:{ 
       name:'dflt name'      
      },    
      name:'name prop', 
      initialize:function(){ 
       this.name = "Mr."+this.name; 
       console.log("init", this.name) // this is printing raj not Mr.raj 
      } 
     }) 
     m = new arrModel({ 
      name:'raj', 
      std:2 
     }); 
     console.log(m.attributes) 
    }) 

回答

2

當您引用的name屬性,你需要這樣說this.get(「名」),因爲這方法導航到屬性散列結果,其中屬性存儲。

默認散列用於爲模型中的默認屬性散列設定種子。如果您沒有在創建新模型實例時傳入屬性,這非常有用。或者,如果某些值有默認值,並且您不希望每次都通過這些值,則可以進行創建。

要更改屬性,請使用set方法。要更改名稱,你會做這樣的事情:

this.set({name: 'some new name'}); 

this.set({name: 'some new name'}, {silent: true}); 

其中前者調用將運行驗證,而後者通話將繞過驗證。

+0

感謝比爾艾森豪爾的答案。一票贊成你的善舉:-)。 – rajkamal

相關問題