2012-09-29 62 views
0

我是Backbones.js的新手,我试图让我的JSON网址并正确解析它们。在Backbone.js解析网址

这是我的代码:

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类中移除解析选项时,我从该集合中得到完整的响应,但不是从模型中得到的。

是否有任何明确的例子来说明如何为不同的子层次设置解析?我的JSON结果在潜入实际数据之前状态良好。

回答

0

我从来没有使用bones.js,但也许这些例子会有所帮助。

我认为你想要做的就是摆脱集合中的parse()函数。这个假设是因为它是一个Post集合,所以你的数据将以Post JSON对象[{id:'1', 'sub':{data}},{id:'2', 'sub':{data}},{id:'3', 'sub':{data}}]之类的数组形式出现。

如果您的发布模型具有子模型或集合,那么您的模型parse()将采用子对象属性名称并对其执行某些操作。

// In Post Model definition 
parse:function(response) { 
    if (response.sub) { 
     // create some model or collection etc. 
    } 
} 

当您执行集合提取时,您可能必须传递选项parse:true

我沿着这些线路发布了一些内容,这可能会帮助您了解如何在获取调用中实例化子模型。

Backbone.js: Load multiple collections with one request

Cast/initialize submodels of a Backbone Model

我希望这有助于。

+0

实际上,json帖子模型本身并不是一个直接的帖子数组。它的统计信息JSON和其他信息..然后在该JSON中的职位数组。我想我可以通过更改Post的解析函数来实现它。链接真的很有帮助。谢谢。 – fhkurdi