2017-01-23 68 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 }); 
     });