2013-06-13 4 views
1

У меня есть проект, где я загружаю части своего контента по запросу ajax. Я получаю каждый раз одни и те же структуры информации (json), и я пытался сделать класс coffeescript для каждого DOM-Layout, который представляет эти структуры.обработка многих изменений DOM

Im работает над первым DOM-представлениями для этих структур и мой код взрывает заявления как controls.append @Legende.content.messageSpan или @Legende.content.itself.append $(labelNew).html "Name: "

Проблемы: Есть 3 следующего DOM-представления я должен реализовать и взорвет мой код.

Мой вопрос заключается в следующем: Какова основная практика обработки многих изменений DOM-дерева и/или предотвращения увеличения количества файлов и увеличения размеров файлов?

+0

Если вы не используете какой-либо движок шаблона, вам необходимо пошагово управлять своим DOM. – Amberlamps

+0

Я думал, что я использую классы как шаблоны с родительским элементом DOM как param в моем конструкторе, который ссылается на узел, где можно добавить все мои элементы. Но это огромные классы и методы. – Felix

ответ

0

Если у вас действительно есть огромное количество изменений DOM, основанных на изменениях базовой модели, лучше всего использовать библиотеку, которая позволяет вам неявно связывать ваш dom с моделью, не требуя явных изменений. 2 из наиболее популярных библиотек для этого являются

  • knockoutjs (делает это и ничто иное)
  • angularjs (делает это и в целом много других вещей, которые вы можете или не нужно)

KnockoutJS более простой и доступный в целом.

Угловой является немного более сложным и самоуверенным, но масштабируется так же, как проекты становятся большими.

Эти библиотеки работают путем добавления аннотаций к HTML, как это (например Нокаут основе)

<tr> 
    <td><input data-bind="value: name" /></td> 
    <td><select data-bind="options: $root.availableMeals, value: meal"></select></td> 
    <td data-bind="text: formattedPrice"></td> 
    <td><a href="#" data-bind="click: $root.removeSeat">Remove</a></td> 
</tr> 

Вы можете настроить РОМ, как вам нравится, и он будет автоматически меняться, чтобы отразить данные, которые вы привязали к нему ,

+0

Также полезный вариант - Backbone + Marionnette + ModelBinder для привязки DOM и моделей –

+0

@ Ивана Антропов уверен. Вы можете продолжать перечислять их весь день. –

+0

У вас есть пример того, что angularjs приносит больше? – Felix

Смежные вопросы