我有一个带有附加参数的URL的模型(以及它的相应集合)。例如,帖子collection
的网址类似于:
/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 });
这是在Backbone.js中执行此操作的accepted
模式吗?我将自己介绍给这个新框架,我只想以可读和可维护的方式对其进行编码。
答案 0 :(得分:0)
您不需要在模型中定义url
,因为Backbone会自动将ID附加到收集网址:http://backbonejs.org/#Model-url
关于收集网址,我认为这是获取网址的完全有效的方法。
或者,但是添加复杂性,您可以将Comments Collection添加为Post模型的属性,并在需要时初始化或获取它。这样,如果您愿意,可以在集合上添加parent
属性并引用该属性以获取基本URL并附加/comments
部分(应避免在两个位置更改内容)帖子网址发生变化。)
最终,选择取决于您愿意处理的复杂程度。