我是骨干新手,我正在尝试设置一个模型集合,其中包含从json文件加载的数据。但它不会被设定。问题出在这里?谁有想法?当我获取集合时,它似乎是空的。
JSON
{
"items": [
{
"id": "0",
"media": "",
"desc": "lorem",
"img": "ipsum"
},
{
"id": "1",
"media": "",
"desc": "lorem",
"img": "ipsum"
}
]
}
Javscript
var Card = Backbone.Model.extend({
defaults: function() {
return {
items: {
id: "lorem",
media: "lorem",
desc:"lorem",
img: "lorem"
}
};
},
clear: function() {
this.destroy();
}
});
var CardCollection = Backbone.Collection.extend({
model: Card,
url: "file.json",
parse: function (response) {
for (var i = 0; i<response.items.length; i++) {
}
}
});
var cards = new CardCollection();
cards.fetch();
console.log(cards)
答案 0 :(得分:0)
使用响应调用CardCollection.parse
方法。如果服务器的响应不需要转换,则可以删除CardCollection
的解析方法。默认实现是直通,响应按原样使用。
基本上parse
应返回要添加到集合中的数组。当前的实现没有做任何事情。实施时缺少返回。
答案 1 :(得分:0)
只需从你的解析方法中返回一些东西,你就可以了。它应该返回一个对象数组,每个对象都适合您的模型。所以最后你将拥有一个与从parse方法返回的对象数组相对应的模型集合。
试试这个
var CardCollection = Backbone.Collection.extend({
model: Card,
url: "file.json",
parse: function (response) {
return response.items;
}
});
阅读此Documentation on Parse Method以获取更多信息。
答案 2 :(得分:0)
fetch是异步的,它会在数据加载之前立即返回。
试试这个
var cards = new CardCollection();
cards.fetch({
success: function () {
console.log(cards);
}
});