Mam szablon handlebars.js, taki jak ten:
{{externalValue}}
<select name="test">
{{#each myCollection}}
<option value="{{id}}">{{title}} {{externalValue}}</option>
{{/each}}
</select>
A to jest wygenerowany wynik:
myExternalValue
<select name="test">
<option value="1">First element </option>
<option value="2">Second element </option>
<option value="3">Third element </option>
</select>
Zgodnie z oczekiwaniami, mogę uzyskać dostęp do pól id
i title
każdego elementu, myCollection
aby wygenerować mój wybór. Poza zaznaczeniem moja externalValue
zmienna jest poprawnie drukowana („myExternalValue”).
Niestety w tekstach opcji externalValue
wartość nigdy nie jest drukowana.
Moje pytanie brzmi: w jaki sposób mogę uzyskać dostęp do zmiennej poza zakresem pliku handlebars.js z pętli?
javascript
templates
scope
each
handlebars.js
lucke84
źródło
źródło
../
wielokrotne używanie w zależności od liczby zakresów oddalonych od wartości.Lub możesz użyć ścieżki bezwzględnej w następujący sposób:
źródło
Widziałem wiele linków do 404 do dokumentacji na ten temat.
Aktualizuję go za pomocą tego, działa od 1 kwietnia 2020 r . :
https://handlebarsjs.com/guide/expressions.html#path-expressions
Niektóre pomocniki, takie jak #with i #each, pozwalają nurkować w zagnieżdżonych obiektach. Po włączeniu do ścieżki segmentów ../ kierownica zmieni się ponownie w kontekst nadrzędny.
Mimo że nazwa jest drukowana w kontekście komentarza, nadal może wrócić do głównego kontekstu (obiektu głównego), aby pobrać prefiks.
OSTRZEŻENIE
Dokładna wartość, którą ../ będzie zmieniała, różni się w zależności od pomocnika, który wywołuje blok. Użycie ../ jest konieczne tylko w przypadku zmiany kontekstu. Dzieci pomocników takich jak {{#each}} wymagałyby użycia ../, podczas gdy dzieci pomocników takich jak {{# #}} nie.
W tym przykładzie wszystkie powyższe odnoszą się do tej samej wartości prefiksu, mimo że znajdują się w różnych blokach. To zachowanie jest nowe od Handlebars 4, informacje o wydaniu omawiają wcześniejsze zachowanie, a także plan migracji.
źródło