何时为Collection和Model使用URL属性?

时间:2012-11-02 10:39:24

标签: backbone.js

我一直在关注一些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"
});

我想我理解第一种方法,我只是通过它们所属的集合与模型进行交互,但我不确定你何时想要为模型及其集合设置网址。

1 个答案:

答案 0 :(得分:0)

有时您需要一个不属于任何集合的模型。

例如login / sign in

var LoginModel = Backbone.Model.extend({
    url: "/login"
});

通过这种方式,您可以与login视图和模型进行交互,就像使用任何其他Backbone模型一样,包括save()(将登录表单发布到服务器)和验证。

但是没有login集合,因此对其进行建模没有意义。

也许您所看到的代码介于两者之间。在应用程序的某些位置通过集合访问模型,而在其他位置无需集合。

如果这是一个好的设计是另一个故事,但没有技术理由不去做。

修改 如您所知,使用urlRoot是另一种选择,因为默认情况下url属性是使用urlRoot构建相对URL的方法。 但是,可以给它一个字符串值来直接指定模型URL。