我正在尝试将数据从 json 文件解析到 Collection View ,该文件中的每组数据都有数字键。 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);
最佳答案
Collection#reset
不打电话parse
并且没有办法让它调用parse
。您有几个选择:
- 手动将
friendjson
转换为数组,并重置
该数组。 - 根本不
重置
,只需将friendjson
交给集合的构造函数并包含{parse: true}
option . - 如果您包含
{parse: true}
选项,请将集合的reset
替换为您自己的调用parse
的版本。
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 });
关于javascript - Backbone Js - 解析数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18431571/