Backbone.js: Models and Collections

Сегодня коротенько пробежимся по моделям и коллекциям. Расскажу, что это и с чем это едят.

Начнём с модели:

class App.Models.Post extends Backbone.Model

  urlRoot: '/posts'

В большинстве случаев это всё, что будет указываться при описании модели: указываем, что модель наследуется от Backbone.Model, а потом указываем путь, по которому Backbone будет слать RESTful-запросы.

Я несколько слукавил, когда сказал, что это всё, что Вам надо будет писать при описании модели (-: В более-менее серьёзном приложении необходимо будет задать ещё значения по умолчанию для модели (defaults), а так же некоторую проверку вводимых значений (validation). Всё это, в принципе, выходит за рамки ознакомительной части, однако, валидацию я добавлю чуть позже, но не в слое модели, а в слое отображения (view), при помощи плагина jquery.validation: он гораздо гибче, чем встроенный в Backbone. Ну а так же покажу, как реализовать проверку на стороне сервера и отображение ответа на клиенте.

Теперь, что касается коллекций. Опять же, пример коллекции:

class App.Collections.Posts extends Backbone.Collection

  model: App.Models.Post
  url: '/posts'

Предлагаю сразу разъяснить, что такое и чем отличаются коллекции и модели, чтобы не было путаницы. Особенное ,если Вы имели опыт работы с моделями в тех же «рельсах».  Модель — это единичная запись, а коллекция — это набор этих записей, моделей. Т.е. когда вы получаете или устанавливаете атрибуты какого-то объекта, например, имя пользователя или его электронный адрес, — это работа с моделью. А вот когда вы делаете запрос к серверу, получаете, а потом отображаете всех пользователей — это уже работа с коллекцией. Коллекция — это множество моделей. И коллекция работает с моделью, о чём и указывает свойство model: App.Models.Post. А так как коллекция работает тоже с данными на сервере, то и путь указывается такой же, что и в модели.

Вот и всё, что касается моделей и коллекций. Более тесно с ними познакомимся, когда коснёмся отображений(views), т.к. картинки строятся на основании данных, полученных с сервера, а так же при создании, изменении или удалении информации пользователем.

Не теряйтесь (-:

Недавние записи

Оставить комментарий