Исходная база данных 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. Это очень эффективно документировано, и поток событий и вызовов методов очень легко понять из-за этого.