我做了一个简单的实验来理解对模型的提取和对集合的提取。但是,此代码为两者提供了“undefined”:
// Model and Collection
var SingleItem = Backbone.Model.extend({
urlRoot : '/data/item.json',
parse: function(response) {
console.log(response);
return response;
}
});
var ManyCollection = Backbone.Collection.extend({
model: SingleItem,
url: '/data/items.json',
});
var many = new ManyCollection();
many.fetch();
console.log(many);
var single = new SingleItem();
single.fetch({
success: function(data) {
console.log("OK");
console.log(data.toJSON());
},
error: function(data){
console.log("NOK");
}
});
console.log(single.get('name'));
演示也在这里:https://github.com/mulderp/backbone-model-fetch
为什么我会'未定义'?我错过了什么?
(从开发控制台输出:
答案 0 :(得分:3)
fetch
是异步的:它将在获取数据之前立即返回。
将调试逻辑移到success
处理程序内部可以解决问题。