Eu tenho um modelo handlebars.js, assim:
{{externalValue}}
<select name="test">
{{#each myCollection}}
<option value="{{id}}">{{title}} {{externalValue}}</option>
{{/each}}
</select>
E esta é a saída gerada:
myExternalValue
<select name="test">
<option value="1">First element </option>
<option value="2">Second element </option>
<option value="3">Third element </option>
</select>
Como esperado, eu posso acessar os campos id
e title
de todos os elementos myCollection
para gerar meu select. E fora do select, minha externalValue
variável é impressa corretamente ("myExternalValue").
Infelizmente, nos textos das opções, o externalValue
valor nunca é impresso.
Minha pergunta é: como acessar uma variável fora do escopo do handlebars.js, cada uma dentro do loop?
javascript
templates
scope
each
handlebars.js
lucke84
fonte
fonte
../
repetidamente, dependendo de quantos escopos estiverem do valor que você possui.Ou você pode usar o caminho absoluto como este:
fonte
Vi muitos links com o 404 para documentação sobre esse tópico.
Eu o atualizo com este, está funcionando em 1º de abril de 2020 :
https://handlebarsjs.com/guide/expressions.html#path-expressions
Alguns ajudantes como #with e #each permitem mergulhar em objetos aninhados. Quando você inclui ../ segmentos no seu caminho, o Guiador volta ao contexto pai.
Mesmo que o nome seja impresso enquanto estiver no contexto de um comentário, ele ainda pode voltar ao contexto principal (o objeto raiz) para recuperar o prefixo.
AVISO
O valor exato que ../ resolverá varia de acordo com o auxiliar que está chamando o bloco. Usar ../ é necessário apenas quando o contexto muda. Filhos de ajudantes como {{#each}} exigiriam o uso de ../ enquanto filhos de ajudantes como {{#if}} não.
Neste exemplo, todas as opções acima referenciam o mesmo valor de prefixo, embora estejam localizadas em blocos diferentes. Esse comportamento é novo no guidão 4, as notas de versão discutem o comportamento anterior e o plano de migração.
fonte