1

我有一个模型(它是相应的集合),它有一个带有附加参数的 URL。例如,帖子的 URLcollection类似于:

/rest-api/posts/2/comments/

对于特定的评论,URL 类似于:

/rest-api/posts/2/comments/3/

定义和实例化评论集合和模型的最佳模式是什么?

我目前正在这样做:

var Comment = Backbone.Model.extend({
    url: function () {
        var base = '/rest-api/posts/' + this.get('post_id') + '/comments/';
        if (this.isNew()) { return base; }
        return base + this.id + '/';
    },
    // ...
});

var CommentsCollection = Backbone.Collection.extend({
    model: Comment,
    url: function () {
        return '/rest-api/posts/' + this.post_id + '/comments/';
    },
    initialize: function (options) {
         this.post_id = options.post_id;
    },
    // ...
});

并像这样实例化集合:

CommentsList = new CommentsCollection({ post_id: current_post_id });

这是accepted在 Backbone.js 中执行此操作的模式吗?我正在向自己介绍这个新框架,我只是想以一种可读和可维护的方式对其进行编码。

4

1 回答 1

0

您不需要url在模型中定义,因为 Backbone 会自动将 id 附加到 Collection url:http ://backbonejs.org/#Model-url

关于集合 url,我认为这是获取 url 的一种完全有效的方法。

或者,但会增加复杂性,您可以将 Comments Collection 添加为 Post 模型的属性,并在需要时初始化或获取它。这样,如果您愿意,您可以parent在 Collection 上添加一个属性并引用该属性以获取基本 url 并附加/comments部分(如果帖子 url 发生更改,这应该避免在两个地方更改内容)。

最终,选择取决于您愿意处理的复杂程度。

于 2012-12-28T11:12:29.683 回答