web-dev-qa-db-fra.com

handlebars.js vérifie si la liste est vide

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}}
112
Drejc

La balise "each" peut également comporter une section "else". Donc, la forme la plus simple est:

{{#each items}}
// render item
{{else}}
// render empty
{{/each}}
199
Emre Efendi

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.

217
Duane

Ok c'est plus simple que je pensais:

{{#if items}}
// render items

{{#each items}}
// render item
{{/each}}

{{else}}
// render empty
{{/if}}
35
Drejc

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}}
7
Karl.S

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}}
1
Akarsh SEGGEMU