Почему коллекции BackboneJs имеют URL-адреса?

Я начинаю использовать backbone.js и не понимаю, почему вы можете указывать URL-адреса разными способами. Не похоже, что URL-адрес коллекции используется где-либо, кроме функции URL-адреса модели. Так есть ли какой-то вред в том, чтобы просто установить urlroot для всех моих моделей и никогда не использовать URL-адреса коллекций?


person bdwain    schedule 28.05.2013    source источник


Ответы (2)


в этом нет никакого вреда, вы можете прекрасно работать на уровне модели, выполняя обновления, удаления и т. д., но когда вы хотите ПОЛУЧИТЬ набор моделей с сервера сразу, удобно сделать что-то вроде этого.

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.
person Rayweb_on    schedule 28.05.2013
comment
Если бы эта коллекция не должна была содержать все экземпляры модели, как бы fetch узнал, какие модели нужно получить? Например, если бы у меня была студенческая модель, студенческая коллекция и модель класса, в которой была студенческая коллекция, мне просто нужно было вручную установить URL-адрес для каждой студенческой коллекции так, чтобы он каким-то образом относился к идентификатору модели класса? - person bdwain; 28.05.2013
comment
как и каждое свойство в Javascript, это может быть значение или функция, для этого конкретного примера вы можете использовать функцию для расчета маршрута студенческих коллекций класса. что-то вроде url: function (){retunr student + class.id;} таким образом, когда вы создаете экземпляр своего класса, вы можете вызвать this.class.students.fetch(); - person Rayweb_on; 28.05.2013

В Backbone.js модели и коллекции связаны со «структурированием» данных, и Backbone предоставляет методы для этого. С маршрутами Restful вам чаще всего нужны обновления/выборки, подобные этому:

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

GET /students/1
{name: "..."}

Как вы заметили, URL-адреса похожи, но в большинстве случаев обработка ответа на выборку коллекции и модели будет выглядеть по-разному. Поскольку концептуально модели являются частью коллекции, URL-адреса моделей в большинстве случаев могут быть разрешены из коллекции. Существуют и другие API, в которых модели и коллекции не совпадают, и вам необходимо самостоятельно установить URL-адреса (например, модель сеанса, которая не принадлежит коллекции).

Возможно, это также поможет сравнить документацию для выборки модели и коллекции:

Это также может помочь понять образ мышления Backbone: http://jonathanotto.com/blog/backbone_js_for_the_everyman.html

person poseid    schedule 28.05.2013