2012-09-11 88 views
1

即时通讯使用骨干JS和im有麻烦显示来自MODEL的数据。 任何人都可以知道这是如何工作的? TIABackbone.js模型(2)

VIEW.JS -

render: function() { 
      ///EDITED TO SIMPLIFY  

      var toModel = new tModel();//tModel is the name of the model  
    console.log(toModel.get('data'));//?? UNDEFINE 


    } 

MODEL.JS -

data:[ 
     { text: "Google", href: "http://google.com" }, 
     { text: "Facebook", href: "http://facebook.com" }, 
     { text: "Youtube", href: "http://youtube.com" } 
    ], 
+0

它是一种很难诊断。根据您的模型和视图代码的其余部分,我可以看到给出的答案可能是正确的。你能多给我们一点吗?例如,尽管看起来我们假设你的数据是一个模型属性,是吗?或者它是对象的属性? 'model.get('data')''''model.data' – jmk2142

+0

现在已经够清楚了吗?对不起大家 。我刚开始使用骨干JS – koko

+0

基本上@StuR为你做了。 ;-)如果这是你的观点和模型的结构,那么他是一个正确的答案和彻底的答案/完整的代码。 – jmk2142

回答

2

http://jsfiddle.net/g3U7j/6/

model.js

MyModel = Backbone.Model.extend({ 
    defaults: { 
     data: [ 
      { 
      text: "Google", 
      href: "http://google.com"}, 
     { 
      text: "Facebook", 
      href: "http://facebook.com"}, 
     { 
      text: "Youtube", 
      href: "http://youtube.com"} 
     ] 
    } 
}); 

view.js

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

var View = new MyView({ 
    model: new MyModel 
});​ 
+1

我会为小提琴投票两次。 – helios

+0

hmm。感谢样本@StuR。其实我也只能在1个JS文件中工作。但由于脚本是在不同的JS(model.js和view.js)我的示例不起作用 – koko

+0

StuR得到了结构。 +1。但它仍然无法工作,因为模型和视图分为2个文件。合理? – koko

0

这是this.model.get('data')(滴在型号M大写它指的是类,而不是实例成员)。

此外,如果您是直接从事件处理程序调用render,你需要确保this正确绑定到类实例的渲染方法(在JavaScript中使用that代替this正常的东西,我这样做主要是在Coffeescript中,它更容易一些)。

+0

这是一个错字。它是我定义的一个型号:) – koko