Подтвердить что ты не робот

Имеет ли смысл инициализировать модели из DOM в backbone.js?

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

4b9b3361

Ответ 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 как есть.

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