Gidon şablonlarında Dizi uzunluğu nasıl bulunur?


87

Bir json nesnesi kullanılarak oluşturulan bir Gidon şablonum var. Bu jsonda bir dizi gönderiyorum. Bunun gibi:

var json = {
               "array":["abc","def","ghi","jkl"] 
}

Şimdi şablonumda bu dizinin uzunluğunu bulmak istiyorum. Gibi bir şey:

{{#each item}}
   {{ array.length }}
{{/each}}

Gidon belgelerinde bulamadık.

Yanıtlar:


189

Benim hatam....

{{array.length}}aslında şablonun içinde çalıştı. Buraya göndermeden önce kontrol etmiş / test etmiş olmalı.


37
Pekala, beni test etme zorunluluğundan kurtardın, bu yüzden teşekkürler. :)
— Perry Tew

8
Bu en azından merak eden herkes için gidonun Mandrills lezzeti için işe yaramıyor. Henüz uygun bir yedek bulamadım.
— oneirois

44

Bu durumda, her bloğun içinden her birinin ebeveyn değişkenine başvurmanız gerekir:

{{#each array}}
    {{../array.length}}
{{/each}}

Sanırım değişkeninizin "dizi" olarak adlandırılması da sorunu muhtemelen karıştırıyor. Açıklığa kavuşturmak için bazı farklı JSON varsayalım:

var json = {
    "fruit":["apple","orange","banana"]
};

Öyleyse bunu yapmak:

<ul>
    {{#each fruit}}
        <li>{{this}} {{@index}} {{../fruit.length}}</li>
    {{/each}}
</ul>

Verim verecek:

<ul>
    <li>apple 0 3</li>
    <li>orange 1 3</li>
    <li>banana 2 3</li>
</ul>

1
Sanırım liste maddeleri şöyle olurduapple 0 3 orange 1 3 banana 2 3
— Paul

@Paul, haklısınız, örnek doğru çıktıyı yansıtacak şekilde güncellendi.
— Kevin Powell

İlgili soru: mevcut ardışık düzen değeri olduğunda bir dizinin uzunluğunu nasıl elde edersiniz?
— Gyscos

Sözdizimsel olarak, bu cevap kabul edilen cevaptan daha mantıklı.
— Neil Monroe

Bu harika bir cevaptı ve doğru cevap olarak seçilmelidir!
— Aditya Rao

2

İşlemek için basit bir yardımcı tanımlayabilirsiniz:

Handlebars.registerHelper('get_length', function (obj) {
 return obj.length;
});   

Ve sonra bunu şablonunuzda kullanın, örneğin:

{{get_length some_object}}

2

İçeriği görüntülemek için boş bir liste test ediyorsanız ... Gidon kullanan Ember.js'de #each için başka bir listeye sahip olabilirsiniz.

{{#each blah as |blah|}}

{{else}}
 //   If array is empty
{{/each}}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.