2012-12-15 50 views
0

我是Backbone.js的新手,我有一個數據集,分配給查看,但我無法獲取數據,而我控制檯,任何人告訴我什麼是錯的用我的代碼?骨幹 - get方法不返回輸出

代碼:

var model = Backbone.Model.extend({ 
    data:[ 
     {text:'Google',href:"http://www.google.com"}, 
     {text:'Yahoo',href:"http://www.yahoo.com"}, 
     {text:'Bing',href:"http://www.bing.com"} 
    ] 
}); 

var View = Backbone.View.extend({ 
    initialize:function(){ 
     this.render(); 
    }, 
    render:function(){ 
     var data = this.model.get('data'); 
     console.log(data);  
    } 
}); 

var myView = new View({model:model}); 

我得到的錯誤是在這裏:

TypeError: this.model.get is not a function 
[Break On This Error] 

var data = this.model.get('data'); 

回答

3

您需要實際實例化模型;使用extend只是創建了Backbone.Model原型的擴展。 The following creates a new instance of Backbone.Model,並用數據初始化它:

var model = new Backbone.Model({ 
    data:[ 
     {text:'Google',href:"http://www.google.com"}, 
     {text:'Yahoo',href:"http://www.yahoo.com"}, 
     {text:'Bing',href:"http://www.bing.com"} 
    ] 
}); 
var myView = new View({ model: model }); 

如果你想要把數據模型本身的類型,那麼你可以使用defaults屬性:

var Model = Backbone.Model.extend({ 
    defaults: { 
     data:[ 
      {text:'Google',href:"http://www.google.com"}, 
      {text:'Yahoo',href:"http://www.yahoo.com"}, 
      {text:'Bing',href:"http://www.bing.com"} 
     ] 
    } 
}); 
var model = new Model(); 
var myView = new View({ model: model }); 
+0

同意。工作正常。但有什麼情況可以使用這個「Backbone.Model.extend({})」 - ?如果是的話? – 3gwebtrain

+0

@ 3gwebtrain是的,例如,當它與特定的URL相關聯,或者當您要定義默認值或驗證或其他特定行爲時。通過Backbone站點上的文檔來閱讀關於這個的更多信息是非常值得的:http://backbonejs.org/#Model – McGarnagle

+1

你可能想要爲這樣的數據使用'defaults' *函數*,淺拷貝和所有這一切。 –