Odpowiedzi:
Tag „each” może również zajmować sekcję „else”. Więc najprostsza forma to:
{{#each items}}
// render item
{{else}}
// render empty
{{/each}}
Jeśli masz coś, co chcesz wyświetlić raz i tylko wtedy, gdy tablica zawiera dane , użyj
{{#if items.length}}
//Render
{{/if}}
.length
zwróci 0 dla pustych tablic, więc osiągnęliśmy prawdziwą wartość błędu.
<ul>
raz wyrenderować tag i <li>
tag dla każdej pozycji na liście. Jeśli lista jest pusta, nie chcę nawet <ul>
renderować, a renderowanie czegoś innego, takiego jak <p>empty list<p>
wewnątrz <ul>
, nie ma sensu.
[]
jest oceniany jako fałszywy. Odpowiedź @Drejc to poprawna odpowiedź według specyfikacji kierownicy.
Ok, to prostsze niż myślałem:
{{#if items}}
// render items
{{#each items}}
// render item
{{/each}}
{{else}}
// render empty
{{/if}}
if
, ale dokumentacja Kierownice jest bardzo jasne:«Jeśli jego powroty argumentów false
, undefined
, null
, ""
, 0
, lub []
, Kierownice nie czynią blok». Powinienem najpierw sprawdzić dokumentację.
Jeśli chcesz sprawdzić, czy kolekcja (kursor) jest pusta, czy nie, poprzednie odpowiedzi nie będą przydatne, zamiast tego musisz użyć count()
metody:
{{#if items.count}}
<p>There is {{items.count}} item(s).</p>
{{else}}
<p>There is nothing</p>
{{/if}}
Dla każdego, kto musi użyć {{#each}} nad {{#if}} (tj. Pętla if wewnątrz pętli for). Czy mają trzy różne listy tablic.
Korzystanie z wyszukiwania w instrukcji if rozwiązuje problem. Ponieważ powyższe odpowiedzi nie rozwiązały mojego problemu.
Oto mój kod,
{{#each OtherRandomItems}}
{{this}}
{{lookup ../AnotherRandomItems @index}}
{{#if (lookup ../RandomItems @index)}}
// render items
{{else}}
// render empty
{{/if}}
{{/each}}
#each
, taki jak<ul>
tag (ze<li>
s w środku), nie chcesz, aby pusty stan był zawijany przez<ul>
.