在Backbone.js中解析网址

时间:2012-09-29 17:42:37

标签: json parsing url backbone.js

我是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结果在潜入实际数据之前状态正常。

1 个答案:

答案 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

我希望这会有所帮助。