Частичные шаблоны
Handlebars позволяет повторно использовать шаблоны через частичные шаблоны. Частичные шаблоны — это обычные шаблоны Handlebars, которые могут быть вызваны непосредственно другими шаблонами.
Основные частичные шаблоны
Для использования частичного шаблона его необходимо зарегистрировать через
Handlebars.registerPartial. Handlebars.registerPartial('myPartial', '{{name}}')
Этот вызов зарегистрирует частичный шаблон
myPartial. Частичные шаблоны могут быть предварительно скомпилированы, и предварительно скомпилированный шаблон может быть передан во второй параметр. Вызов частичного шаблона выполняется с помощью синтаксиса вызова частичного шаблона:
{{> myPartial }}
Отобразит частичный шаблон с именем
myPartial. При выполнении частичного шаблона он будет выполнен в текущем контексте выполнения. Динамические частичные шаблоны
Возможна динамическая выборка частичного шаблона для выполнения с помощью синтаксиса подвыражения.
{{> (whichPartial) }}
Вычислит
whichPartial и затем отобразит частичный шаблон, имя которого возвращает эта функция. Подвыражения не разрешают переменные, поэтому
whichPartial должна быть функцией. Если имя частичного шаблона — это простая переменная, его можно разрешить с помощью вспомогательной функции lookup. {{> (lookup . 'myVariable') }}
Контексты частичных шаблонов
Можно выполнить частичные шаблоны в пользовательском контексте, передав контекст в вызов частичного шаблона.
{{> myPartial myOtherContext }}
Параметры частичных шаблонов
Пользовательские данные могут быть переданы в частичные шаблоны через параметры хэша.
{{> myPartial parameter=value }}
Установит
parameter в значение value при выполнении частичного шаблона. Это особенно полезно для экспонирования данных из родительских контекстов в частичный шаблон:
{{> myPartial name=../name }}
Блоки частичных шаблонов
Обычное поведение при попытке отобразить отсутствующий частичный шаблон — это выброс ошибки. Если вместо этого требуется резервное копирование, частичные шаблоны можно вызвать с помощью синтаксиса блока.
{{#> myPartial }}
Failover content
{{/myPartial}}
Что отобразит
Failover content, если частичный шаблон myPartial не зарегистрирован. Этот синтаксис блока также можно использовать для передачи шаблонов в частичный шаблон, который может быть выполнен специально названным частичным шаблоном
@partial-block. Шаблон {{#> layout }}
My Content
{{/layout}}
с частичным шаблоном
layout, содержащим Site Content
{{> @partial-block }}
отобразит
Site Content My Content
В этом случае блок будет выполняться в контексте частичного шаблона в момент вызова. Пути с глубиной и параметры блока работают относительно блока частичного шаблона, а не шаблона частичного шаблона.
{{#each children as |child|}}
{{#> childEntry}}
{{child.value}}
{{/childEntry}}
{{/each}}
Отобразит
child.value из этого шаблона, а не из частичного шаблона. Встроенные частичные шаблоны
Шаблоны могут определять частичные шаблоны с областью действия блока с помощью декоратора
inline. {{#*inline "myPartial"}}
My Content
{{/inline}}
{{#each children}}
{{> myPartial}}
{{/each}}
Что отобразит частичный шаблон
myPartial для каждого дочернего элемента. Каждый встроенный частичный шаблон доступен текущему блоку и всем дочерним элементам, включая выполнение других частичных шаблонов. Это позволяет использовать шаблоны макета и аналогичную функциональность:
{{#> layout}}
{{#*inline "nav"}}
My Nav
{{/inline}}
{{#*inline "content"}}
My Content
{{/inline}}
{{/layout}}
Где частичный шаблон
layout может быть: <div class="nav">
{{> nav}}
</div>
<div class="content">
{{> content}}
</div>
© 2011–2017 by Yehuda Katz
Licensed under the MIT License.
https://handlebarsjs.com/partials.html