1

我一直在关注一些 Backbone.js 教程,当还有一个包含模型的集合时,我对何时在模型中使用“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"
});

我想我理解第一种方法,我只通过模型所属的集合与模型交互,但我不确定你什么时候想要模型及其集合的 url。

4

1 回答 1

0

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

例如login/ sign in

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

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

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

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

如果它是一个好的设计是另一回事,但没有技术上的理由不这样做。

编辑 正如您所注意到的, usingurlRoot是另一个选项,因为默认情况下,该url属性是一种用于urlRoot构造相对 url 的方法。但是,可以给定一个字符串值来直接指定模型 url。

于 2012-11-02T11:03:03.437 回答