Spec-Zone.ru › Handlebars.js

Частичные шаблоны

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API