Saya memiliki template Handlebars yang dirender menggunakan objek json. Dalam json ini saya mengirimkan sebuah array. Seperti ini:
var json = {
"array":["abc","def","ghi","jkl"]
}
Sekarang di template saya, saya ingin mencari panjang array ini. Sesuatu seperti:
{{#each item}}
{{ array.length }}
{{/each}}
Tidak dapat menemukannya di dokumentasi Handlebars.
javascript
templates
handlebars.js
Abhidev
sumber
sumber
Dalam hal ini Anda perlu mereferensikan variabel induk dari masing-masing dari dalam setiap blok:
Saya pikir variabel Anda diberi nama "array" mungkin juga menggabungkan masalah. Mari kita asumsikan beberapa JSON berbeda hanya untuk memperjelas:
var json = { "fruit":["apple","orange","banana"] };
Jadi lakukan ini:
<ul> {{#each fruit}} <li>{{this}} {{@index}} {{../fruit.length}}</li> {{/each}} </ul>
Akan menghasilkan:
<ul> <li>apple 0 3</li> <li>orange 1 3</li> <li>banana 2 3</li> </ul>
sumber
apple 0 3
orange 1 3
banana 2 3
Anda dapat menentukan helper sederhana untuk menanganinya:
Handlebars.registerHelper('get_length', function (obj) { return obj.length; });
Dan kemudian gunakan di template Anda misalnya:
sumber
Jika Anda menguji daftar kosong untuk menampilkan konten ... Di Ember.js yang menggunakan setang, Anda dapat memiliki yang lain untuk #each.
{{#each blah as |blah|}} {{else}} // If array is empty {{/each}}
sumber