Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 何时对集合和模型使用URL属性?_Backbone.js - Fatal编程技术网

Backbone.js 何时对集合和模型使用URL属性?

Backbone.js 何时对集合和模型使用URL属性?,backbone.js,Backbone.js,我一直在关注一些Backbone.js教程,当还有一个包含模型的集合时,我对何时在模型内部使用“url”感到有点困惑。例如,为了与服务器同步,我看到许多类似的代码: var PostModel = Backbone.Model.extend({}); var PostsModel = Bacbone.Collection.extend({ model: PostModel, url: "/posts" }); 但是,我也看到一些模型也有“url”属性,如: var PostModel

我一直在关注一些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。

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

例如,登录/登录

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

但是,没有登录集合,因此对其进行建模是没有意义的

也许你看到的代码介于两者之间。模型在应用程序的某些位置通过集合进行访问,而在其他位置则不通过集合进行访问

如果它是一个好的设计,那就另当别论了,但是没有技术上的理由不这么做

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

谢谢你的回答。然而,这让我陷入了另一种困惑。我认为如果模型不属于某个集合,就应该使用urlRoot来设置该模型的url,不是吗?顺便说一下,这就是我看到对已经属于某个集合的模型使用urlRoot的地方:是的,这有点混乱。我也会使用urlRoot,并使用默认的Model.url实现,但这并不能阻止您直接将url放入Model.urlwhre您看到了Post/Posts模型示例吗?因为这没有什么意义:很抱歉,我不记得我在哪里看到了一个模型和它的集合都具有相同的“url”属性的示例。但是我在这个帖子上面发布的链接确实有一个带有“urlRoot”的模型和一个带有“url”的集合,它们指向同一个url,我认为这也很奇怪。不是吗?
var LoginModel = Backbone.Model.extend({
    url: "/login"
});