是否可以在传递给顶级模板的上下文中呈现模板,甚至只是部分模板?看起来这可能需要递归渲染,但也许我错过了一些东西。
以下示例使用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.\"}}"
}
也许我错过了一些基本的东西 - 是否有更惯用的方法呢?
答案 0 :(得分:0)
您无法在description
值中包含部分块,并希望通过顶级模板方法将它们评估为部分块;整个description
字符串将作为单个文字字符串吐出。
您需要做的是在将description
的上下文对象传递给顶级模板方法之前评估部分。
如果您使用以下方式预编译了部分内容:
Handlebars.registerPartial('warn', Handlebars.compile(document.getElementById('partial-warning-template').innerHTML));
然后,当您构建description
字符串时,您将能够调用此部分:
{
description: 'Some text before the warning.' +
Handlebars.partials.warn({ 'warning-message': 'My warning here.' }) +
'Some text after the warning.' +
Handlebars.partials.warn({ 'warning-message': 'Now adding a second warning.' })
}