在 backbone 视图中导入 json
Import json in backbone View
我是 backbone 的新手,我还在习惯一切的流程。我想做的是在我的模型中导入 data.json
文件并制作在我看来使用它...
data.json
[
{ id: "001", student: "Mark" },
{ id: "002", student: "Sally" },
{ id: "003", student: "Harold" }
]
assets/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)
因为 fetch 使用的是 jQuery Ajax,所以它是异步的。如果您在调用 fetch 后立即记录数据,则不会从服务器拉取数据。你应该这样做:
data.fetch({
success: function(model, response, options) {
console.log(model);
},
error: function() {
}
});
使用 JQuery:
var DataModel = new DataModel();
$.when(DataModel.fetch()).then(function() {
var students = new Students({model: DataModel });
});
我是 backbone 的新手,我还在习惯一切的流程。我想做的是在我的模型中导入 data.json
文件并制作在我看来使用它...
data.json
[
{ id: "001", student: "Mark" },
{ id: "002", student: "Sally" },
{ id: "003", student: "Harold" }
]
assets/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)
因为 fetch 使用的是 jQuery Ajax,所以它是异步的。如果您在调用 fetch 后立即记录数据,则不会从服务器拉取数据。你应该这样做:
data.fetch({
success: function(model, response, options) {
console.log(model);
},
error: function() {
}
});
使用 JQuery:
var DataModel = new DataModel();
$.when(DataModel.fetch()).then(function() {
var students = new Students({model: DataModel });
});