web-dev-qa-db-fra.com

Accéder à une variable en dehors de la portée d'un Handlebars.js à chaque boucle

J'ai un template handlebars.js, juste 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 variable externalValue est correctement imprimée ("myExternalValue").

Malheureusement, dans les textes des options, la valeur externalValue n'est jamais imprimée.

Ma question est la suivante: comment puis-je accéder à une variable en dehors de la portée du descripteur handlebars.js depuis la boucle?

169
lucke84

Essayer

<option value="{{id}}">{{title}} {{../externalValue}}</option>

Le ../ segment de chemin fait référence à la portée du modèle parent qui devrait correspondre à vos souhaits.

402
spliter

Ou vous pouvez utiliser un chemin absolu comme ceci:

<option value="{{id}}">{{title}} {{@root.user.path.to.externalValue}}</option>
8
kidkkr