0

我是 Backbones.js 的新手,我试图获取我的 JSON url 并正确解析它们。

这是我的代码:

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 结果在进入实际数据之前状态良好。

4

1 回答 1

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:一次请求加载多个集合

铸造/初始化主干模型的子模型

我希望这有帮助。

于 2012-09-30T00:54:39.170 回答