Weitergabe von Variablen durch Lenker teilweise
Ich bin derzeit der Umgang mit handlebars.js in einem express.js -Anwendung. Um die Dinge modulare, ich teilte alle meine Vorlagen in der Teiltöne.
Mein problem: ich konnte nicht einen Weg finden, um die übergabe von Variablen durch eine partielle Anrufung. Lassen Sie uns sagen, dass ich teilweise die wie folgt aussieht:
<div id=myPartial>
<h1>Headline<h1>
<p>Lorem ipsum</p>
</div>
Nehmen wir an, ich registrierte diese teilweise mit dem Namen 'myPartial'. In einem anderen template kann ich dann etwas sagen wie:
<section>
{{> myPartial}}
</section>
Dies funktioniert gut, die teilweise dargestellt werden, wie erwartet, und ich bin eine glückliche Entwickler. Aber was ich jetzt brauchen, ist ein Weg, um an verschiedenen Variablen, die durch diesen Aufruf, um zu überprüfen, innerhalb einer partial-zum Beispiel, wenn eine überschrift gegeben ist oder nicht. So etwas wie:
<div id=myPartial>
{{#if headline}}
<h1>{{headline}}</h1>
{{/if}}
<p>Lorem Ipsum</p>
</div>
Und der Aufruf sollte wie folgt Aussehen:
<section>
{{> myPartial|'headline':'Headline'}}
</section>
oder so.
Ich weiß, dass ich in der Lage bin, zu definieren, alle Daten, die ich brauche, bevor ich das Rendern eines templates. Aber ich brauche einen Weg, es zu tun, wie gerade erklärt. Gibt es eine Möglichkeit?
InformationsquelleAutor der Frage Pascal Precht | 2012-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
LENKER Teiltöne nehmen Sie einen zweiten parameter, wird der Kontext für die teilweise:
In den Versionen v2.0.0 alpha-und später können Sie auch einen hash-Wert mit dem Namen parameters:
Sehen Sie die tests für diese Szenarien: https://github.com/wycats/handlebars.js/blob/ce74c36118ffed1779889d97e6a2a1028ae61510/spec/qunit_spec.js#L456-L462
https://github.com/wycats/handlebars.js/blob/e290ec24f131f89ddf2c6aeb707a4884d41c3c6d/spec/partials.js#L26-L32
InformationsquelleAutor der Antwort Yehuda Katz
Dies ist sehr gut möglich, wenn Sie schreiben Ihre eigenen Helfer. Wir werden mit einem benutzerdefinierten
$
Helfer zu erreichen diese Art der Interaktion (und mehr):InformationsquelleAutor der Antwort Jesse Houchins
Nur für den Fall, hier ist was ich getan habe zu bekommen, teilweise Argumente, Art. Ich habe einen kleinen Helfer, der nimmt einen Teil des namens und ein hash-Wert der Parameter, die übergeben werden, um die teilweise:
Das wichtigste hier ist, dass LENKER Helfer akzeptieren, eine Ruby-wie hash von Argumenten. In der Helfer-code kommen Sie als Teil der Funktion das Letzte argument—
options
— in seinerhash
Mitglied. Auf diese Weise erhalten Sie das erste argument—der Teil des namens, um die Daten nach.Dann, werden Sie wahrscheinlich wollen, um wieder eine
Handlebars.SafeString
vom Helfer oder "triple‑stash"—{{{
— zu verhindern, dass es doppelte Escapezeichen.Hier ist eine mehr oder weniger vollständige Nutzung Szenario:
Hoffe, das hilft ...jemand. 🙂
InformationsquelleAutor der Antwort Vlad GURDIGA
Dies ist auch in späteren Versionen der LENKER mit der
key=value
notation:Sodass Sie übergeben bestimmte Werte der partiellen Zusammenhang.
Referenz: Kontext unterscheidet sich für die partielle #182
InformationsquelleAutor der Antwort cweston
Klingt wie Sie wollen, so etwas zu tun:
Yehuda bereits gab dir einen Weg, das zu tun:
Aber zu klären:
Zu geben, Ihre teilweise seine eigenen Daten, so geben Sie Ihr eigenes Modell innerhalb des bestehenden Modells, etwa so:
In anderen Worten, wenn das ist das Modell, das Sie geben, um Ihre Vorlage:
Dann fügen Sie ein neues Objekt gegeben werden, um die teilweise:
childContext
wird der Kontext, der teilweise wie Yehuda sagte -, dass, es sieht nur das Feldanother
aber Sie sehen nicht (oder kümmern uns um die Bereichsome
). Wenn Sie hatteid
in der top-level-Modell, und wiederholen Sieid
wieder in die childContext, das wird nur gut funktionieren, als die teilweise nur sieht, was drin istchildContext
.InformationsquelleAutor der Antwort Chunky Bacon
Akzeptierte Antwort funktioniert großartig, wenn Sie nur wollen, zu einem anderen Kontext in Ihrer teilweise. Allerdings, es lässt Sie nicht auf irgendwelche von der übergeordneten Kontext. Übergeben Sie mehrere Argumente benötigen Sie, um schreiben Sie Ihre eigenen Helfer. Hier ist eine funktionierende Helfer für LENKER
2.0.0
(die andere Antwort funktioniert für die Versionen<2.0.0
):Dann in Ihre Vorlage, die Sie tun können, so etwas wie:
Und in Ihrer teilweisen, Sie werden in der Lage sein Zugriff auf diese Werte als Kontext wie:
InformationsquelleAutor der Antwort Andrew C
Ja, ich war spät, aber ich kann nur hinzufügen, für Montieren - Benutzer: Sie können buil-in
"parseJSON"
Helfer http://assemble.io/helpers/helpers-data.html. (Entdeckt in https://github.com/assemble/assemble/issues/416).InformationsquelleAutor der Antwort vasiliy0s