Czy w pliku Handlebars.js istnieje sposób sprawdzania, czy kolekcja lub lista jest pusta, czy też jest pusta, przed przejściem i iteracją po liście / kolekcji?
// if list is empty do some rendering ... otherwise do the normal
{{#list items}}
{{/list}}
{{#each items}}
{{/each}}
handlebars.js
Drejc
źródło
źródło
#each
, taki jak<ul>
tag (ze<li>
s w środku), nie chcesz, aby pusty stan był zawijany przez<ul>
.Jeśli masz coś, co chcesz wyświetlić raz i tylko wtedy, gdy tablica zawiera dane , użyj
.length
zwróci 0 dla pustych tablic, więc osiągnęliśmy prawdziwą wartość błędu.źródło
<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:
źródło
items
jest to pusta tablica (tj. Ma wartość[]
), zwróci prawdziwą wartość. Natomiastitems.length
daje wartość błędną dla pustej tablicy. Zobacz odpowiedź @ Duane .if
, ale dokumentacja Kierownice jest bardzo jasne:«Jeśli jego powroty argumentówfalse
,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:źródło
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,
źródło