Yanıtlar:
"Her" etiketi de bir "başka" bölümü alabilir. Yani en basit biçim şudur:
{{#each items}}
// render item
{{else}}
// render empty
{{/each}}
Bir kez görüntülemek istediğiniz bir şey varsa ve yalnızca dizide veri varsa , şunu kullanın:
{{#if items.length}}
//Render
{{/if}}
.length
boş diziler için 0 döndürecektir, böylece gerçek bir falsey değerine ulaşmış oluruz.
<ul>
bir <li>
etiket ve bir etiket oluşturmak istiyorum . Liste boşsa <ul>
, render etmesini bile istemiyorum ve <p>empty list<p>
içindeki gibi başka bir şeyi render etmek <ul>
mantıklı değil.
[]
yanlış olarak değerlendirilir. @Drejc'in cevabı, gidon spesifikasyonuna göre doğru cevaptır.
Tamam, düşündüğümden daha basit:
{{#if items}}
// render items
{{#each items}}
// render item
{{/each}}
{{else}}
// render empty
{{/if}}
items
boş bir dizi (yani bir değere sahiptir []
), bir truthy değeri üretir. Oysa items.length
boş bir dizi için yanlış bir değer üretir. @ Duane'nin cevabına bakın .
if
, ama Gidon dokümantasyon çok açıktır: 'onun argüman döner ise false
, undefined
, null
, ""
, 0
, veya []
, Gidon blok oluşturulamıyor.' Önce dokümanları kontrol etmeliydim.
Bir koleksiyonun (imleç) boş olup olmadığını kontrol etmek istiyorsanız, önceki cevaplar kullanışlı olmayacaktır, bunun yerine count()
yöntemi kullanmalısınız :
{{#if items.count}}
<p>There is {{items.count}} item(s).</p>
{{else}}
<p>There is nothing</p>
{{/if}}
{{#İf}} üzerine bir {{#each}} kullanması gereken herkes için (yani, for döngüsü içinde bir if döngüsü). Üç farklı dizi listesi var mı?
Bir if ifadesi içinde bir arama kullanmak sorunu benim için çözer. Yukarıdaki cevaplar sorunumu çözmedi.
İşte kodum
{{#each OtherRandomItems}}
{{this}}
{{lookup ../AnotherRandomItems @index}}
{{#if (lookup ../RandomItems @index)}}
// render items
{{else}}
// render empty
{{/if}}
{{/each}}
#each
, bir<ul>
etiket gibi sarılmasını istiyorsanız (içinde<li>
s ile ), boş durumun<ul>
.