Saya memiliki template setang.js, seperti ini:
{{externalValue}}
<select name="test">
{{#each myCollection}}
<option value="{{id}}">{{title}} {{externalValue}}</option>
{{/each}}
</select>
Dan ini adalah output yang dihasilkan:
myExternalValue
<select name="test">
<option value="1">First element </option>
<option value="2">Second element </option>
<option value="3">Third element </option>
</select>
Seperti yang diharapkan, saya dapat mengakses id
dan title
bidang setiap elemen myCollection
untuk menghasilkan pilih saya. Dan di luar pilih, externalValue
variabel saya dicetak dengan benar ("myExternalValue").
Sayangnya, dalam teks opsi, externalValue
nilai tidak pernah dicetak.
Pertanyaan saya adalah: bagaimana saya bisa mengakses variabel di luar ruang lingkup setang.js masing-masing dari dalam loop?
javascript
templates
scope
each
handlebars.js
lucke84
sumber
sumber
../
berulang kali tergantung pada berapa banyak cakupan dari nilai Anda.Atau Anda dapat menggunakan jalur absolut seperti ini:
sumber
Saya melihat banyak tautan dengan 404 untuk dokumentasi tentang topik ini.
Saya memperbaruinya dengan ini, ini berfungsi pada 1 April 2020 :
https://handlebarsjs.com/guide/expressions.html#path-expressions
Beberapa pembantu seperti #with dan #each memungkinkan Anda untuk menyelam ke objek bersarang. Saat Anda memasukkan ../ segmen ke jalur Anda, Setang akan berubah kembali ke konteks induk.
Meskipun namanya dicetak ketika dalam konteks komentar, itu masih bisa kembali ke konteks utama (root-object) untuk mengambil awalan.
PERINGATAN
Nilai tepat yang ../ akan menyelesaikan bervariasi berdasarkan pada helper yang memanggil blok. Menggunakan ../ hanya diperlukan ketika konteks berubah. Anak-anak pembantu seperti {{#each}} akan membutuhkan penggunaan ../ sedangkan anak-anak pembantu seperti {{#if}} tidak.
Dalam contoh ini semua referensi di atas nilai awalan yang sama meskipun mereka berada di dalam blok yang berbeda. Perilaku ini baru pada Setang 4, catatan rilis membahas perilaku sebelumnya serta rencana migrasi.
sumber