2017-01-23 79 views
-1

我是新来的骨干,而且我仍然习惯于一切的流动..我想要做的是在我的模型中导入data.json文件,并利用它在我的鉴于...在骨干中导入json查看

data.json

[ 
    { id: "001", student: "Mark" }, 
    { id: "002", student: "Sally" }, 
    { id: "003", student: "Harold" }  
] 

资产/ data.js(模型)

var DataModel = Backbone.Model.extend({ 
    url: 'assets/data.json', 

    initialize: function() { 
     // this logs properly 
     console.log('this initializes'); 
    } 
}) 

data_view.js

var Students = Backbone.View.extend({ 
    initialize: function() { 
     var data = new DataModel(); 
     data.fetch(); 

     // doesn't return json 
     console.log(data); 
    } 
}) 

像这样的数据记录...

v __proto__: Backbone.Model 
    > constructor:() 
    > initialize:() 
    url: "assets/data.json" 
    > __proto__: Object 

我所有的进口都正确,但为什么不是我的JSON装载我的视野内?我究竟做错了什么? (我试过做一个集合,但效果相同;没有找到json)

+0

是'data.json'内的资产?你使用铬?你有一个网络服务器?如果不是,是否允许本地文件访问? –

回答

2

因为fetch使用的是jQuery Ajax,所以它是异步的。如果您在调用fetch之后立即记录数据,则数据不会从服务器拉出。你应该做如下:

data.fetch({ 
    success: function(model, response, options) { 
     console.log(model); 
    }, 
    error: function() { 

    } 
}); 

链接参考:http://backbonejs.org/#Model-fetch

+0

嗯,似乎没有返回任何东西在控制台... – Modelesq

+0

我的意思是,如果我记录错误()的东西,它会记录...:\ – Modelesq

+0

你能提供错误吗? data.json是静态文件吗? –

0

随着使用JQuery:

 var DataModel = new DataModel(); 
     $.when(DataModel.fetch()).then(function() { 
      var students = new Students({model: DataModel }); 
     });