我一直在关注一些Backbone.js教程,当有一个包含模型的Collection时,我对在Model内使用'url'时有点困惑。例如,我看到很多代码看起来像这样,以便与服务器同步:
var PostModel = Backbone.Model.extend({});
var PostsModel = Bacbone.Collection.extend({
model: PostModel,
url: "/posts"
});
但是我也看到一些模型也具有'url'属性,如下所示:
var PostModel = Backbone.Model.extend({
url: "/posts"
});
var PostsModel = Bacbone.Collection.extend({
model: PostModel,
url: "/posts"
});
我想我理解第一种方法,我只是通过它们所属的集合与模型进行交互,但我不确定你何时想要为模型及其集合设置网址。
答案 0 :(得分:0)
有时您需要一个不属于任何集合的模型。
例如login
/ sign in
。
var LoginModel = Backbone.Model.extend({
url: "/login"
});
通过这种方式,您可以与login
视图和模型进行交互,就像使用任何其他Backbone
模型一样,包括save()
(将登录表单发布到服务器)和验证。
但是没有login
集合,因此对其进行建模没有意义。
也许您所看到的代码介于两者之间。在应用程序的某些位置通过集合访问模型,而在其他位置无需集合。
如果这是一个好的设计是另一个故事,但没有技术理由不去做。
修改强>
如您所知,使用urlRoot
是另一种选择,因为默认情况下url
属性是使用urlRoot
构建相对URL的方法。
但是,可以给它一个字符串值来直接指定模型URL。