Esiste un metodo incorporato per accedere al contesto radice in un modello Handlebars.js? La maggior parte degli helper sta aggiungendo un contesto nidificato e devi scrivere ../ prima della variabile in quel contesto per accedervi ma non è molto pratico se ne hai molti, if, ecc.Accesso al contesto radice nel modello Handlebar.js
risposta
Usa @root. Questo è in handlebars-v2.0.0.js
{{@root.somthing.nested_somthing}}
Non come ancora!
E 'stato suggerito un paio di volte e non v'è un biglietto aperto: https://github.com/wycats/handlebars.js/issues/392
La loro tesi è che non è necessario, ma se si tratta di una soluzione a basso costo senza sovraccarico delle prestazioni discernibile io non vedo perché non può essere incluso.
Sì, ho creato uno vedi http://www.my2ndgeneration.com/TemplateLanguageDoc.aspx#xroot
In sostanza, aggiungere questo aiuto e bingo {{}} xroot vi porterà in cima ...
ho sempre passare i miei dati JSON in manubri come questo:
{ data: self.data }
così il codice qui sotto sempre restituisce "dati" quando si vede il tag xroot e mi porta alla cima
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 + "']";
}
};
non è possibile accedere al contesto radice del modello dopo aver modificato il contesto con il ciclo (ad es. ciascuno) more info
Tuttavia, v'è la possibilità di accedere contesto precedente, con '../'
# app/assets/javascript/contents.coffee
body = HandlebarsTemplates['my_hbs_template']({
view:{
registryName: 'foo',
data: {items: {x: 'x'}}
}
})
modello:
<!-- 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>
controllo http://handlebarsjs.com/#paths per ulteriori informazioni
- 1. accesso al modello dal modello
- 2. Handlebar.js non aggiorna il mio modello
- 3. Accesso al contesto di primavera nel test @BeforeTest
- 4. Estensione Jinja che ha accesso al contesto
- 5. accesso contesto Spring nel pacchetto OSGi
- 6. accesso al modello dal middleware - django
- 7. Campi di accesso nel modello intermedio Django
- 8. PHP & Twig: Difficoltà accesso variabili nel modello
- 9. Come posso accedere al bean radice nel mio modello di FreeMarker?
- 10. Accesso al modello principale dalla vista parziale
- 11. Django: come ottenere il percorso radice di un sito nel modello?
- 12. https hosting nel dominio radice
- 13. Django come passare variabili personalizzate al contesto da utilizzare nel modello di amministrazione personalizzato?
- 14. Passare parametri al modello senza sovrascrivere il contesto dati
- 15. Django - oggetti modello di accesso nome verbose
- 16. Accesso al typedef dall'istanza
- 17. XSLT Passare contesto corrente nel modello di chiamata
- 18. Accesso a SharedPreferences senza contesto
- 19. Contesto richiesta di accesso ovunque
- 20. Meteor set contesto modello complessivo
- 21. Accesso al testo della direttiva angolare (elemento) all'interno del modello
- 22. Accesso al modulo angolare 2 guidato da ngForm nel componente
- 23. java.lang.IllegalStateException: l'attributo di contesto radice non è di tipo WebApplicationContext
- 24. Accesso al modello ng di altri elementi dall'interno della direttiva
- 25. Accesso alla classe base typedef nel modello di classe derivata
- 26. Backbone.Marionette - Accesso alle variabili nel modello ItemView o nel modello CompositeView
- 27. Quale delle seguenti NON è una classe radice nel contesto di Objective-C?
- 28. Le proprietà non esistono nel contesto corrente
- 29. Django accesso modello ForeignKey oggetti
- 30. Accesso al modello da una vista layout in Grails
È anche possibile utilizzare @root in blocchi 'if' e' each', ad es. '{{#each @ root.somthing.nested_somthing}}' – user393274
Grazie per aver segnalato la versione, dove è stata introdotta. Stavamo fallendo fino a quando non ci siamo resi conto che stavamo lavorando con handlebars-v.1.3.0.js –