handlebars.js - tutorial - handlerbars.js comprueba si la lista está vacía
handlebars tutorial (5)
¿Hay alguna manera en la plantilla de Handlebars.js para comprobar si la colección o lista es nula o está 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}}
La etiqueta "cada" puede tomar una sección "else" también. Entonces la forma más simple es:
{{#each items}}
// render item
{{else}}
// render empty
{{/each}}
Ok, es más simple de lo que pensaba:
{{#if items}}
// render items
{{#each items}}
// render item
{{/each}}
{{else}}
// render empty
{{/if}}
Para cualquiera que necesite usar {{#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 resuelve el problema para mí. Como, las respuestas anteriores no resolvieron mi problema.
Aquí está mi código,
{{#each OtherRandomItems}}
{{this}}
{{lookup ../AnotherRandomItems @index}}
{{#if (lookup ../RandomItems @index)}}
// render items
{{else}}
// render empty
{{/if}}
{{/each}}
Súper tarde para la fiesta, pero no me gusta la respuesta aceptada (¿y si tengo algo que mostrar una vez pero solo si la matriz tiene datos?) Y la segunda respuesta tampoco parece ser funcional para mí. Entonces quizás esto ayude a un futuro desarrollador.
{{#if items.length}}
//Render
{{/if}}
El .length devolverá 0 para las matrices vacías por lo que hemos logrado un verdadero valor de Falsey.
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 método count()
:
{{#if items.count}}
<p>There is {{items.count}} item(s).</p>
{{else}}
<p>There is nothing</p>
{{/if}}