Backbone.js 为什么BackboneJs集合具有URL';s

Backbone.js 为什么BackboneJs集合具有URL';s,backbone.js,backbone.js-collections,backbone-model,Backbone.js,Backbone.js Collections,Backbone Model,我开始使用backbone.js,我不明白为什么可以用多种不同的方式指定url。除了模型url函数之外,集合url似乎不在任何地方使用。那么,在我所有的模型上只设置urlroot而从不使用集合url有什么害处吗?没有害处,您可以在模型级别进行更新、删除等操作,但当您希望一次从服务器获取一组模型时,这样做很方便 Books = Backbone.Collection.extend({ url : "/books" }); books = new Books(); books.fetch()

我开始使用backbone.js,我不明白为什么可以用多种不同的方式指定url。除了模型url函数之外,集合url似乎不在任何地方使用。那么,在我所有的模型上只设置urlroot而从不使用集合url有什么害处吗?

没有害处,您可以在模型级别进行更新、删除等操作,但当您希望一次从服务器获取一组模型时,这样做很方便

Books = Backbone.Collection.extend({
    url : "/books"
});
books = new Books();
books.fetch(); // this will line will make a GET request to your backend, the result will
               // be a list of models.

在Backbone.js中,模型和集合与“结构化”数据相关,而Backbone提供了实现这一点的方法。对于Restful路由,您通常需要如下更新/获取:

GET /students
[{name: "...", ...}]

GET /students/1
{name: "..."}
正如您所观察到的,URL是相似的,但在大多数情况下,处理集合和模型获取的响应看起来会有所不同。从概念上讲,模型是集合的一部分,因此在大多数情况下,模型URL可以从集合中解析。还有一些模型和集合不匹配的API,您需要自己设置URL(例如,不属于集合的会话模型)

比较模型和集合获取的文档可能也会有所帮助:


这也可能有助于理解主干思维方式:

如果此集合不应该包含模型的所有实例,fetch如何知道要获取哪些模型?就像我有一个学生模型、一个学生集合和一个包含学生集合的类模型一样,我是否需要手动设置每个学生集合的url以某种方式与类模型的id相对?因为Javascript中的每个属性都可以是值或函数,对于这个特定示例,您可以使用函数“Calculate”类的学生集合的路径。类似于url:function(){retunr“students”+class.id;}这样当你实例化你的类时,你可以调用这个.class.students.fetch();