Parfois, il est utile d'avoir des variables globales pour les modèles.
Certains exemples pourraient inclure des éléments tels que :
Je pensais que ce serait cool d'ajouter quelque chose comme:
var hbs = require("handlebars");
hbs.registerGlobal({
title: "myapp"
});
Qui pourrait être référencé dans n'importe quel modèle, peut-être via @global.title
, @title
ou simplement title
.
Les pensées?
Je réfléchissais davantage à cela et je pense que la création d'un assistant en ligne pourrait faire ce que vous voulez.
var hbs = require("handlebars");
var myGlobal = {
title: "myapp"
};
hbs.registerHelper('global', function(key){
return myGlobal[key];
});
{{! in your template }}
<div>{{global "title"}}</div>
Et vous pouvez faire n'importe quoi avec myGlobal
Tu peux
define('myGlobal', function(){
return {
title: "myapp"
};
});
...
var myGlobal = require('myGlobal');
myGlobal['newKey'] = 'something';
...
var hbs = require("handlebars");
var myGlobal = require('myGlobal');
hbs.registerHelper('global', function(key){
return myGlobal[key];
});
Naturellement, il y a un inconvénient, comme si vos clés étaient écrasées, mais c'est tout pour vous.
Soutenir cela dans le guidon lui-même nécessitera beaucoup de frais généraux pour peu de gain, IMO.
Il existe un certain nombre d'options telles que la suggestion d'assistance de @rafde ou la transmission d'un global dans le champ de données, qui devrait en fait fonctionner avec la syntaxe proposée ci-dessus :
template(context, {data: {global: global}})
Devrait tout exposer sur la fenêtre dans {{@global.foo}}
, mais je n'ai pas testé cela et vous devrez valider que cela fonctionne en fait.
@kpdecker template(context, {data: {global: global}})
n'est pas explicitement documenté.
Le plus proche que j'ai vu est template({}, {data: {level: Handlebars.logger.WARN}})
Mais la documentation ne mentionne pas qu'un 2ème paramètre peut être passé.
Notre documentation fait souvent défaut, mais si vous voulez nous aider à nous améliorer, ce serait génial.
Ceci est largement testé : https://github.com/wycats/handlebars.js/blob/master/spec/data.js#L1
Pourquoi ne pourriez-vous pas le faire en définissant simplement la paire clé/valeur dans un objet non variable ?
glabalPair = {title: "Title"};
https://github.com/wycats/handlebars.js/blob/master/spec/data.js#L1 était la réponse. Fermeture de ceci mais la documentation doit encore être ajoutée.
Pas encore documenté ?
Commentaire le plus utile
@kpdecker
template(context, {data: {global: global}})
n'est pas explicitement documenté.Le plus proche que j'ai vu est
template({}, {data: {level: Handlebars.logger.WARN}})
Mais la documentation ne mentionne pas qu'un 2ème paramètre peut être passé.