¿Hay alguna forma en la plantilla de Handlebars.js para verificar si la colección o lista es nula o vacía, antes de ir e iterar a través de la lista / colección?
// if list is empty do some rendering ... otherwise do the normal
{{#list items}}
{{/list}}
{{#each items}}
{{/each}}
handlebars.js
Drejc
fuente
fuente
#each
, como una<ul>
etiqueta (con<li>
s dentro), no desea que el estado vacío quede envuelto por<ul>
.Si tiene algo que desea mostrar una vez y solo si la matriz tiene datos , use
.length
devolverá 0 para matrices vacías, por lo que hemos logrado un valor de falsey real.fuente
<ul>
etiqueta una vez y una<li>
etiqueta para cada elemento de la lista. Si la lista está vacía, ni siquiera quiero<ul>
que se procese, y no tiene sentido representar algo más como<p>empty list<p>
dentro<ul>
.[]
se evalúa como falso. La respuesta de @Drejc es la respuesta correcta según la especificación del manillar.Ok, es más simple de lo que pensaba:
fuente
items
es una matriz vacía (es decir, tiene un valor de[]
), producirá un valor verdadero. Mientras queitems.length
produce un valor falsey para una matriz vacía. Ver la respuesta de @ Duane .if
, pero la documentación manillares es muy clara: 'Si vuelve a su argumentofalse
,undefined
,null
,""
,0
, o[]
, manillares no van a hacer que el bloque'. Debería haber revisado los documentos primero.Si desea verificar si una colección (cursor) está vacía o no, las respuestas anteriores no serán útiles, en su lugar debe usar el
count()
método:fuente
Para cualquiera que necesite usar un {{#each}} encima de {{#if}} (es decir, un bucle if dentro de un bucle for). ¿Tienen tres listas diferentes de matrices?
Usar una búsqueda dentro de una declaración if me resuelve el problema. Como, las respuestas anteriores no resolvieron mi problema.
Aquí está mi código
fuente