2012-12-15 58 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' *函数*,浅拷贝和所有这一切。 –