Имеет ли смысл инициализировать модели из DOM в backbone.js? - PullRequest
12 голосов
/ 24 февраля 2011

backbone.js полагается на успокоительные приложения для инициализации моделей, но как насчет прогрессивного улучшения? Данные уже находятся в dom (или некоторых из них), поэтому должны ли мои модели по-прежнему выполнять вызовы restful-интерфейса, даже если html-элементы существуют? Есть ли другой дизайн библиотеки, который мог бы лучше подходить для этого случая?

Ответы [ 2 ]

6 голосов
/ 24 февраля 2011

Магистраль справится с этим довольно хорошо. Способ обработки этого случая состоит в том, чтобы иметь фабричную модель, которая может принимать узел DOM и анализировать его для извлечения данных (id, поля и т. Д.).

Если вы предоставите опцию 'el' для Конструктор вида , магистраль не будет ни извлекать, ни отображать модель, поэтому вы можете оставить свой узел как есть.

После изменения данных контроллер будет синхронизироваться с сервером. Вы должны быть осторожны, чтобы включить любые данные, необходимые для работы вашего приложения, независимо от того, отображается оно или нет.

0 голосов
/ 25 февраля 2011

Вы не должны использовать элемент DOM для инициализации вашей модели с данными бэкэнда.У вас действительно хорошая инфраструктура с магистралью, чтобы этого не делать.Когда вы полагаетесь на DOM, вам нужно менять свой javascript при каждом изменении структуры DOM из-за дизайна для примера.

Также не полагайтесь на базовый вид для создания модели.Должно быть наоборот, модель диктует вид на странице.

Просто добавьте элемент script и создайте ваши объекты JS прямо там.Вы можете инициализировать коллекции, отдельные модели и т. Д.

Вы можете сделать то же самое с шаблонами или строительными блоками пользовательского интерфейса DOM:

<script type="text/js-template">
  <!-- Your template as realy do elements or using a js templating engine like _.template-->
</script>

Загрузите страницу и воспроизведите приложение локально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...