У меня есть шаблон handlebars.js, вот так:
{{externalValue}}
<select name="test">
{{#each myCollection}}
<option value="{{id}}">{{title}} {{externalValue}}</option>
{{/each}}
</select>
И это сгенерированный вывод:
myExternalValue
<select name="test">
<option value="1">First element </option>
<option value="2">Second element </option>
<option value="3">Third element </option>
</select>
Как и ожидалось, я могу получить доступ к полям id
и title
каждого элемента, myCollection
чтобы сгенерировать мой выбор. И вне выбора моя externalValue
переменная правильно напечатана ("myExternalValue").
К сожалению, в текстах опций externalValue
значение никогда не распечатывается.
Мой вопрос: как я могу получить доступ к переменной вне области действия handlebars.js из цикла?
javascript
templates
scope
each
handlebars.js
lucke84
источник
источник
../
повторно, в зависимости от того, сколько областей от значения вы находитесь.Или вы можете использовать абсолютный путь следующим образом:
источник
Я видел много ссылок с 404 для документации по этой теме.
Я обновляю его этим, он работает с 1 апреля 2020 года :
https://handlebarsjs.com/guide/expressions.html#path-expressions
Некоторые помощники, такие как #with и #each, позволяют вам погружаться во вложенные объекты. Когда вы включите ../ сегменты в свой путь, Handlebars вернутся в родительский контекст.
Даже если имя напечатано в контексте комментария, оно все равно может вернуться к основному контексту (корневому объекту), чтобы получить префикс.
ПРЕДУПРЕЖДЕНИЕ
Точное значение, к которому ../ будет разрешено, зависит от помощника, вызывающего блок. Использование ../ необходимо только при изменении контекста. Детям помощников, таким как {{#each}}, потребуется использование ../, а детям помощников, таким как {{#if}} - нет.
В этом примере все вышеприведенные ссылки ссылаются на одно и то же значение префикса, даже если они расположены в разных блоках. Это поведение является новым с Handlebars 4, заметки о выпуске обсуждают предыдущее поведение, а также план миграции.
источник