Existe-t-il un moyen dans les modèles Handlebars.js de vérifier si la collection ou la liste est nulle ou vide, avant de parcourir et de parcourir la liste/la collection?
// if list is empty do some rendering ... otherwise do the normal
{{#list items}}
{{/list}}
{{#each items}}
{{/each}}
La balise "each" peut également comporter une section "else". Donc, la forme la plus simple est:
{{#each items}}
// render item
{{else}}
// render empty
{{/each}}
Si vous souhaitez afficher quelque chose ne fois et niquement si le tableau contient des données, utilisez
{{#if items.length}}
//Render
{{/if}}
.length
retournera 0 pour les tableaux vides, nous avons donc obtenu une valeur Falsey réelle.
Ok c'est plus simple que je pensais:
{{#if items}}
// render items
{{#each items}}
// render item
{{/each}}
{{else}}
// render empty
{{/if}}
Si vous voulez vérifier si une collection (curseur) est vide ou non, les réponses précédentes ne seront pas utiles, vous devez utiliser la méthode count()
:
{{#if items.count}}
<p>There is {{items.count}} item(s).</p>
{{else}}
<p>There is nothing</p>
{{/if}}
Pour tous ceux qui doivent utiliser un {{#each}} au-dessus de {{#if}} (c'est-à-dire une boucle if dans une boucle for). Est-ce qu'ils ont trois listes différentes de tableaux.
L'utilisation d'une recherche dans une instruction if résout le problème pour moi. En tant que, les réponses ci-dessus n'ont pas résolu mon problème.
Voici mon code,
{{#each OtherRandomItems}}
{{this}}
{{lookup ../AnotherRandomItems @index}}
{{#if (lookup ../RandomItems @index)}}
// render items
{{else}}
// render empty
{{/if}}
{{/each}}