我有一篇帖子有很多评论,我想在帖子页面上显示评论。这是一个Rails 3应用程序,我有我的意见'网址嵌入在帖子的网址中,因此它基本上看起来像/post/1/comments
。
问题是,我不确定如何为这种情况创建骨干集合。我应该将post_id
传递给服务器的javascript,然后执行类似
var Comments = Backbone.Collection.extend({
model: Comment,
url: '/post/' + idFromSomewhereElse + '/comments'
});
还是有更好的方法来处理这个问题?如果有多个嵌套,我应该怎样处理这个问题,我可以使用/forums/1/topics/3/replies
。
答案 0 :(得分:4)
一个想法可能是委托 Comments.url
的 root 到Post
父模型:
// code simplified and not tested
App.Post = Backbone.Model.extend({
urlRoot: "/posts"
});
App.Comments = Backbone.Collection.extend({
model: Comment,
urlRoot: function(){
return this.post.url + "/comments";
},
initialize: function( opts ){
this.post = opts.post;
}
});
我认为这个想法也可以扩展到更复杂的关系,如/forums/1/topics/3/replies
。你只需要处理从每个Collection到其父级的关系。