尝试使用主干集合来初始化抓取json数据,但结果是数据为空。 骨干集合是否会自动将json数据解析为模型,或者我们必须手动解析它?
var Book = Backbone.Model.extend({
title:"",
isbn:"",
img:""
});
var Books = Backbone.Collection.extend({
model:Book,
url:'latest.json',
// parse:function(data){
// console.log(data);
// },
initialize: function(){
this.fetch();
}
});
编辑添加到我的示例json中,我使用jsonlint.com进行验证。
[
{"title":"American Pie","isbn":"345354356","img":"/image/pie.png"},
{"title":"Long Tails","isbn":"567575576g","img":"/image/long_tails.png"},
{"title":"Pirates","isbn":"567575765","img":"/image/pirates.png"}
]
在JSFiddle链接中添加。
答案 0 :(得分:1)
您需要先确保这些工作
没有脚本错误(在javascript控制台中检查它们)
Collection.fetch发出更正网址的请求(请参阅Chrome网络检查器中的资源部分)
检查响应mime/type
是否正确“application / json”,服务器确实提供JSON字符串
确保JSON响应格式正确(我遇到了这个问题。它必须是数组而不是对象ex:[{},{},{},{}]
)
最后从服务器刷新(清除缓存)
这是一个演示使用http://jsfiddle.net/5E3Nc/16/
的JsFiddle注意:只有在您要从中构建模型集合的服务器发送自定义响应时,才必须明确写入Parse
顺便说一句,我注意到你做了这个initialize:function(){
this.fetch();
}
这不起作用。您应该在集合本身之外使用该集合 例如
var col = Backbone.Collection.extend({url:"data.json"});
var instance = new col({model:Tweet});
instance.fetch();