Ist es möglich, eine Vorlage, oder auch nur eine partielle, aus dem Kontext, der an eine Top-Level-Vorlage übergeben wird, zu rendern? Es scheint, als würde dies rekursives Rendering erfordern, aber vielleicht fehlt mir etwas.Rendering Vorlage im Kontext in Lenker
Das folgende Beispiel demonstriert dies mit Bootstrap.
sagen das mein Top-Level-Vorlage ist:
<div class="panel">
<div class="panel-body">
{{{description}}}
</div>
</div>
Und mein Kontext ist:
{
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."
}
Was möchte ich die Warnung in eine teilweise für eine Reihe von Gründen tun getrennt ist :
- willkürliche Platzierung innerhalb umgebenden Text
- Kann partials für andere Typen als Warnung (Gefahr, info, etc.) machen
- können so viele hinzufügen, wie er im Rahmen String
Aus diesen Gründen setzt benötigt wird, scheint es, wie es nicht möglich ist, es zu setzen in die Top-Level-Vorlage.
Die partielle würde wie folgt aussehen:
<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>
Sobald diese an Ort und Stelle ist, würde ich es zu benutzen, wie so in der Lage:
{
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.\"}}"
}
Vielleicht etwas Grundsätzliches fehlt mir - Gibt es einen idiomatischen Weg, dies zu tun?
Dank! Als Referenz habe ich die kompilierte Vorlage einer Standardfunktion zugewiesen, anstatt das partielle Objekt zu verschmutzen, aber den gleichen Effekt. Lassen Sie warn = Handlebars.compile ($ ("# partial-warning-template"). Html()); und später + warnen ("Meine Warnung hier.") + "Ein Text nach der Warnung" + warn ("Jetzt eine zweite Warnung hinzufügen.") "Ein Text vor der Warnung."; Wo meine Vorlage hatte {{{this}}} wie der innere Inhalt. –