Исходная база данных backbone.js

Я играл с backbone.js в течение последних нескольких дней, редактируя пример Todos и записывая свою собственную версию.

Теперь я смотрю на создание контроллера с несколькими маршрутами, но то, что я нашел после выполнения примера Todos, вызывает Todos.fetch(), заставляет элементы перерисовываться. Я думаю, что он вызывает событие обновления?

В документации backbone.js говорится:

Обратите внимание, что выборка не должна использоваться для заполнения коллекций при загрузке страницы - все модели, необходимые во время загрузки, уже должны быть загружены на место. fetch предназначен для моделей с ленивой загрузкой для интерфейсов, которые не нужны немедленно: например, документы с коллекциями заметок, которые могут быть открыты и закрыты.

Каков наилучший способ загрузки данных? Могу ли я использовать вызов ajax для получения данных и передачи их при создании экземпляра основного контроллера? Как насчет того, чтобы изменить страницу и показать новое представление? Я бы просто вызвал функцию fetch()?

Ответы

Ответ 1

Этот бит документации содержит напоминание о том, что вы должны загрузить все данные на начальной загрузке страницы и использовать выборку для всех последующих нагрузок.

У вас может быть такой код:

MyCollection = new Collection({some json data});

Значительно быстрее, чем загрузка страницы, а затем несколько запросов на загрузку данных.

Ответ 2

Я немного запутался в формулировке документа, но выбор - это способ сообщить вашей Коллекции или Модели, чтобы перейти на сервер и получить данные через либо ваша собственная функция синхронизации, либо Backbone.sync, которая уже внутренне использует ajax и может передать результат вместе с вашим успехом или функцией ошибки.

Что касается примера Todos, о котором вы упомянули, то как Коллекция предназначена для работы. Он обновляет модели, а затем запускает событие "refresh", которое может заставлять ваше представление повторно отображаться, как вы сказали.

Я настоятельно рекомендую посмотреть код Backbone.js. Это очень эффективно документировано, и поток событий и вызовов методов очень легко понять из-за этого.