Можно ли отобразить шаблон или даже частичный из контекста, переданного шаблону верхнего уровня? Похоже, это может потребовать рекурсивного рендеринга, но, возможно, я чего-то не хватает.Шаблон рендеринга в контексте в Handlebars
Приведенный ниже пример демонстрирует использование Bootstrap.
Скажи это мой главный шаблон уровня:
<div class="panel">
<div class="panel-body">
{{{description}}}
</div>
</div>
И мой контекст:
{
description: "\
Some text before the warning.\
<div class=\"alert alert-warning\" role=\"alert\">\
<span class=\"glyphicon glyphicon-warning-sign\" aria-hidden=\"true\"> </span>\
My warning here.\
</div>\
Some text after the warning."
}
То, что я хотел бы сделать, это отдельное предупреждение в частичное по ряду причин :
- Произвольное размещение в окружающем тексте
- Можно сделать партиалы для других типов, чем предупреждение (опасность, информация и т.д.)
- Можно добавить столько, сколько необходимо вкраплены в контексте строки
По этим причинам, похоже, это не возможно поставить его в шаблон верхнего уровня.
Парциальное будет выглядеть примерно так:
<script id="partial-warning-template" type="text/x-handlebars-template">
<div class="alert alert-warning" role="alert">
<span class="glyphicon glyphicon-warning-sign" aria-hidden="true"> </span>
{{{warning-message}}}
</div>
</script>
После того, как это на месте, я смог бы использовать его как так:
{
description: "\
Some text before the warning.\
{{> partial-warning-template \"My warning here.\"}}\
Some text after the warning.\
{{> partial-warning-template \"Now adding a second warning.\"}}"
}
Может быть, я что-то отсутствует фундаментальное - есть ли более идиоматический способ сделать это?
Спасибо! Для справки я назначил скомпилированный шаблон стандартной функции, а не загрязнял объект partials, но тот же эффект. let warn = Handlebars.compile ($ ("# partial-warning-template"). Html()); и позже + предупредить («Мое предупреждение здесь.») + «Какой-то текст после предупреждения» + предупреждает («Теперь, добавив второе предупреждение.») «Какой-то текст до предупреждения.»; Где мой шаблон имел {{{this}}} как внутренний контент. –