我正在尝试将数据解析为json文件中的集合视图,该文件中包含每组数据的数字键。 JSON看起来像这样:
{
"0": {
"artifact_id": "36",
"timestamp": "2013-08-20 11:59:00",
"modified": "2013-08-20 11:59:00",
"text": "Why did the last one duplicate? I don't think I clicked it twice...",
"author_desc": "",
"object_type": "artifact",
"comments": []
},
"1": {
"artifact_id": "35",
"timestamp": "2013-08-20 11:57:51",
"modified": "2013-08-20 11:57:51",
"text": "This is a new artifact for a new day.",
"author_desc": "",
"object_type": "artifact",
"comments": []
},
"2": {
"artifact_id": "34",
"timestamp": "2013-08-20 11:57:50",
"modified": "2013-08-20 11:57:50",
"text": "This is a new artifact for a new day.",
"author_desc": "",
"object_type": "artifact",
"comments": []
}
}
如何编写模型解析以将每个条目(0,1,2 ......等)作为数据中的每个模型?
这是我的收藏,下面是Casey的建议添加,但它似乎没有运行解析方法:
var FriendCollection = Backbone.Collection.extend({
model: FriendModel,
parse: function(data) {
console.log('running parse');
return _.map(data, _.identity);
}
});
var friendCollection = new FriendCollection();
friendCollection.reset(friendjson);
答案 0 :(得分:2)
Collection#reset
没有致电parse
,也无法拨打parse
。您有几个选择:
friendjson
转换为数组,并为该数组提供reset
。reset
,只需将friendjson
交给集合的构造函数并添加{parse: true}
option。reset
选项,则将您的收藏集parse
替换为您自己的版本{parse: true}
。1 应该非常明显。
2 会是这样的:
var friendCollection = new FriendCollection(friendjson, { parse: true });
演示:http://jsfiddle.net/ambiguous/dbM82/
3 看起来像这样:
var FriendCollection = Backbone.Collection.extend({
//...
reset: function(models, options) {
if(options && options.parse) {
delete options.parse;
models = this.parse(models);
}
return Backbone.Collection.prototype.reset.call(this, models, options);
}
});
var friendCollection = new FriendCollection();
friendCollection.reset(friendjson, { parse: true });
答案 1 :(得分:0)
使用Collection#parse
方法。
var MyCollection = Backbone.Collection.extend({
parse: function (data) {
return _.map(data, _.identity);
}
});