Имеет ли смысл инициализировать модели из DOM в backbone.js?
backbone.js полагается на успокоительные приложения для инициализации моделей, но как насчет прогрессивного улучшения? Данные уже находятся в dom (или некоторые из них), поэтому должны ли мои модели по-прежнему создавать обратный интерфейс, даже несмотря на то, что существуют элементы html? Есть ли другой дизайн библиотеки, который может быть лучше подходит для этого случая?
Ответы
Ответ 1
Вам не следует использовать элемент DOM для инициализации вашей модели с использованием данных на сервере. У вас действительно хорошая инфраструктура с основой, чтобы этого не сделать. Когда вы полагаетесь на DOM, вам нужно изменить свой javascript всякий раз, когда структура DOM изменяется из-за дизайна для примера.
Также не следует полагаться на опорный вид, чтобы создать модель. Это должно идти наоборот, модель диктует взгляды на странице.
Просто добавьте элемент script и создайте объекты JS непосредственно там. Вы можете инициализировать коллекции, отдельные модели и т.д.
Вы можете сделать то же самое с шаблонами или структурными блоками DOM UI:
<script type="text/js-template">
<!-- Your template as realy do elements or using a js templating engine like _.template-->
</script>
Загрузите свою страницу и приложите приложение к локальной сети.
Ответ 2
Магистраль может справиться с этим довольно хорошо. То, как я обрабатываю этот случай, - это иметь модель factory, которая может получить DOM node и проанализировать ее, чтобы извлечь данные (id, поля и т.д.).
Если вы предоставите опцию 'el' для конструктор вида, магистраль не будет отображать и не отображать модель, поэтому вы можете сохранить свою node как есть.
После изменения данных контроллер будет синхронизироваться с сервером. Вы должны быть осторожны, чтобы включить любые данные, которые ваше приложение должно использовать, отображалось ли оно или нет.