Gibt es eine integrierte Methode für den Zugriff auf den Stammkontext in einer Handlebars.js-Vorlage? Die meisten Helfer fügen einen verschachtelten Kontext hinzu, und Sie müssen ../ vor der Variable in diesem Kontext schreiben, um darauf zuzugreifen, aber das ist nicht sehr praktisch, wenn Sie viele von jedem, ifs, usw. haben.Zugriff auf den Stammkontext in der Vorlage "Handlebar.js"
Antwort
Verwenden @root. Dies ist im Lenker-v2.0.0.js
{{@root.somthing.nested_somthing}}
Nicht als noch!
Es wurde ein paar Mal vorgeschlagen, und es ist ein offenes Ticket: https://github.com/wycats/handlebars.js/issues/392
Ihr Argument ist, dass es nicht erforderlich ist, aber wenn es eine billige fix ohne erkennbare Performance-Overhead ist sehe ich nicht, warum es kann nicht enthalten sein.
Ja, ich habe ein http://www.my2ndgeneration.com/TemplateLanguageDoc.aspx#xroot
Grundsätzlich sehen erstellt, fügen Sie diese Helfer und Bingo {{XROOT}} werden Sie ganz nach oben ...
ich immer meine JSON-Daten in Lenkern passieren wie dies:
{ data: self.data }
somit der Code unten immer wieder „Daten“, wenn es der XROOT Tag sieht und nimmt mich an die Spitze
Handlebars.JavaScriptCompiler.prototype.nameLookup = function (parent, name, type) {
if (name.indexOf("xRoot") === 0) {
return "data";
}
if (/^[0-9]+$/.test(name)) {
return parent + "[" + name + "]";
} else if (Handlebars.JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
return parent + "." + name;
}
else {
return parent + "['" + name + "']";
}
};
Es gibt keine Möglichkeit, auf den Stammkontext der Vorlage zuzugreifen, nachdem Sie den Kontext mit Schleifen (z. each) more info
Allerdings besteht die Möglichkeit, mit vorherigem Kontext zuzugreifen '../'
# app/assets/javascript/contents.coffee
body = HandlebarsTemplates['my_hbs_template']({
view:{
registryName: 'foo',
data: {items: {x: 'x'}}
}
})
Vorlage:
<!-- app/assets/javascript/templates/my_content.hbs -->
<table class="table">
<tbody>
{{#each view.data.items}}
<tr>
<td>{{@key}}</td>
<td>
Hello from {{../view.registryName}}
</td>
</tr>
{{/each}}
</tbody>
</table>
Scheck http://handlebarsjs.com/#paths für weitere Informationen
- 1. Zugriff auf den Text der Winkeldirektive (Element) in der Vorlage
- 2. Grails App Stammkontext
- 3. Zugriff auf Routenparameter in Zweig Vorlage
- 4. Zugriff auf Daten in lenker.js Vorlage
- 5. Zugriff Richtlinie Attributwert in der Vorlage
- 6. Zugriff auf andere Bereichsvariablen in benutzerdefinierten Vorlage
- 7. Zugreifen auf Eigenschaften der übergeordneten Vorlage in der untergeordneten Vorlage
- 8. Zugriff auf Basisklasse der Vorlage vor der Erweiterung der Vorlage abgeleitet von
- 9. Zugriff auf eine Vorlage Basisklassen Funktion Zeigertyp
- 10. Zugriff auf Vorlage Params EJS Express
- 11. Zugriff auf öffentliche geerbte Vorlage Datenelemente
- 12. Zugriff auf Vorlage Argumente von Spezialisierung
- 13. Django: Zugriff auf Sitzungsvariablen innerhalb einer Vorlage?
- 14. PROBLEM: Zugriff auf Json-Daten innerhalb der HTML-Vorlage, AngularJS
- 15. Zugriff auf Django-Vorlage {{Variable}} von JavaScript
- 16. Zugriff auf den Dateideskriptor der geöffneten Datei
- 17. Zugriff auf den Variablennamen
- 18. Zugriff auf den Namen der App von innerhalb einer Schiene Vorlage beim Erstellen von Schienen App
- 19. Zugriff auf Backbone-Modelleigenschaften in einer Lenker-Vorlage
- 20. Zugriff auf das Objekt in einer Django-Admin-Vorlage
- 21. Zugriff dynamische ID in Vorlage in Meteor
- 22. Zugriff auf Projekte über DTE in C# T4 Vorlage
- 23. Zugriff auf Vorlage Helfer Wörterbuch in Meteor Ereignishandler
- 24. ersetzen symfony2 Zugriff verweigert Vorlage
- 25. Handlebar.js Vorlage mit dynamischen Formulareingaben unter Verwendung von Underscore.js - Zendesk App
- 26. Den Zugriff auf den Ordner verweigern, aber den Zugriff auf eine Datei in diesem Ordner zulassen
- 27. Der Zugriff auf die Eigenschaften eines Objekts kann durch den Zugriff auf den Typ
- 28. Zugriff auf statische Elemente in einer Velocity-Vorlage?
- 29. Zugriff auf eine lokale Variable aus der Vorlage in der Steuerung in Angular2
- 30. Zugriff auf Array-Elemente in einer Django-Vorlage?
Sie können @root auch in 'if' und' each' Blöcken, z. '{{@each @ root.somthing.nested_somthing}}' – user393274
Danke für das Hinweis auf die Version, wo es eingeführt wurde. Wir versagten, bis wir feststellten, dass wir mit Lenker arbeiten - v.1.3.0.js –