J'ai un modèle handlebars.js, comme ceci:
{{externalValue}}
<select name="test">
{{#each myCollection}}
<option value="{{id}}">{{title}} {{externalValue}}</option>
{{/each}}
</select>
Et voici la sortie générée:
myExternalValue
<select name="test">
<option value="1">First element </option>
<option value="2">Second element </option>
<option value="3">Third element </option>
</select>
Comme prévu, je peux accéder aux champs id
et title
de chaque élément de myCollection
pour générer ma sélection. Et en dehors de la sélection, ma externalValue
variable est correctement imprimée ("myExternalValue").
Malheureusement, dans les textes d'options, la externalValue
valeur n'est jamais imprimée.
Ma question est la suivante: comment puis-je accéder à une variable en dehors de la portée du handlebars.js chacun à partir de la boucle?
javascript
templates
scope
each
handlebars.js
lucke84
la source
la source
../
plusieurs reprises en fonction du nombre de portées loin de la valeur que vous êtes.Ou vous pouvez utiliser un chemin absolu comme celui-ci:
la source
J'ai vu de nombreux liens avec 404 pour la documentation sur ce sujet.
Je le mets à jour avec celui-ci, il fonctionne le 1er avril 2020 :
https://handlebarsjs.com/guide/expressions.html#path-expressions
Certains helpers comme #with et #each vous permettent de plonger dans des objets imbriqués. Lorsque vous incluez ../ segments dans votre chemin, Handlebars reviendra dans le contexte parent.
Même si le nom est imprimé dans le contexte d'un commentaire, il peut toujours revenir au contexte principal (l'objet racine) pour récupérer le préfixe.
AVERTISSEMENT
La valeur exacte à laquelle ../ se résoudra varie en fonction de l'assistant qui appelle le bloc. L'utilisation de ../ n'est nécessaire que lorsque le contexte change. Les enfants des aides tels que {{#each}} nécessiteraient l'utilisation de ../ alors que les enfants des aides tels que {{#if}} ne le font pas.
Dans cet exemple, tous les éléments ci-dessus font référence à la même valeur de préfixe même s'ils sont situés dans des blocs différents. Ce comportement est nouveau depuis Handlebars 4, les notes de publication traitent du comportement antérieur ainsi que du plan de migration.
la source