我应该如何创建一个作用于另一个模型的主干集合?

时间:2012-03-24 17:44:15

标签: javascript backbone.js

我有一篇帖子有很多评论,我想在帖子页面上显示评论。这是一个Rails 3应用程序,我有我的意见'网址嵌入在帖子的网址中,因此它基本上看起来像/post/1/comments

问题是,我不确定如何为这种情况创建骨干集合。我应该将post_id传递给服务器的javascript,然后执行类似

的操作
var Comments = Backbone.Collection.extend({
  model: Comment,
  url: '/post/' + idFromSomewhereElse + '/comments'
});

还是有更好的方法来处理这个问题?如果有多个嵌套,我应该怎样处理这个问题,我可以使用/forums/1/topics/3/replies

1 个答案:

答案 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到其父级的关系。