Книга: Выразительный JavaScript
Улучшенные шаблоны
Улучшенные шаблоны
Большинство шаблонизаторов делают больше, чем просто заполняют шаблоны строками. По меньшей мере они позволяют добавлять в шаблоны условия, аналогично оператору if
, и повторения частей шаблона, аналогично циклам.
Если б мы могли повторять кусок шаблона для каждого элемента массива, второй шаблон ("comment"
) был бы нам не нужен. Мы могли просто сказать шаблону "talk"
, чтобы он повторялся для массива, содержащегося в свойстве comments
, и создавал бы узлы, которые являются комментариями, для каждого элемента массива.
Это могло бы выглядеть так:
<div>
<div template-repeat="comments">
<span>{{author}}</span>: {{message}}
</div>
</div>
Идея в следующем: когда при обработке шаблона встречается атрибут template-repeat
, повторяющим шаблон, код проходит циклом по массиву, содержащемуся в свойстве, названном так же, как этот атрибут. Контекст шаблона (переменная values
в instantiateTemplate
) при работе цикла показывала бы на текущий элемент массива так, чтобы метку искали бы в объекте comment
, а не в теме.
Перепишите instantiateTemplate
так, чтобы она это умела, и потом поменяйте шаблоны, чтоб они использовали эту возможность, и уберите лишние строки для создания комментариев из функции drawTalk
.
Как бы вы организовали условное создание узлов, чтобы можно было опускать части шаблона, если определённое значение равно true
или false
?
- Часть III. Шаблоны разработки через тестирование
- 6. Улучшенные формы
- Шаблоны
- Вы пока не видите поведенческие шаблоны?
- Именованные шаблоны
- 28. Шаблоны зеленой полосы
- Простые графические шаблоны
- Шаблоны убеждающих писем
- Раздел Шаблоны
- Административные шаблоны
- Шаблоны безопасности
- Стандартные шаблоны безопасности