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>.