我是Backbones.js的新手,我试图获取我的JSON网址并正确解析它们。
这是我的代码:
window.Post = Backbone.Model.extend({
initialize: function(options) {
this.id = options.id;
},
url: function() {
return 'api/get_post/?post_type=movies&id=' + this.id;
},
parse : function(response) {
return response.posts;
},
});
window.Posts = Backbone.Collection.extend({
model: Post,
defaults: {
model: Post,
},
url: "api/get_recent_posts/?post_type=movies",
parse : function(response) {
return response.posts;
},
});
似乎解析两个覆盖彼此或某事。当我从Post类中删除parse选项时,我从集合中获得完整的响应,但不是从模型中获得。
有没有关于如何为不同的子层次结构设置解析的明确示例?我的JSON结果在潜入实际数据之前状态正常。
答案 0 :(得分:0)
我从未使用过bones.js,但也许这些例子会有所帮助。
我认为你想要做的就是摆脱你馆藏中的parse()
功能。这假定由于它是Post集合,您的数据将作为Post JSON对象[{id:'1', 'sub':{data}},{id:'2', 'sub':{data}},{id:'3', 'sub':{data}}]
或类似的数组出现。
如果您的Post模型具有子模型或集合,那么您的模型parse()
将获取子对象属性名称并对其执行某些操作。
// In Post Model definition
parse:function(response) {
if (response.sub) {
// create some model or collection etc.
}
}
您可能必须在进行集合提取时传递选项parse:true
。
我在这些内容中发布了一些内容,可以帮助您了解如何在fetch调用上实例化子模型。
Backbone.js: Load multiple collections with one request
Cast/initialize submodels of a Backbone Model
我希望这会有所帮助。