Existe-t-il un moyen dans le modèle Handlebars.js de vérifier si la collection ou la liste est nulle ou vide, avant de parcourir la liste / collection?
// if list is empty do some rendering ... otherwise do the normal
{{#list items}}
{{/list}}
{{#each items}}
{{/each}}
handlebars.js
Drejc
la source
la source
#each
, comme une<ul>
balise (avec<li>
s à l'intérieur), vous ne voulez pas que l'état vide soit enveloppé par le<ul>
.Si vous avez quelque chose que vous souhaitez afficher une fois et seulement si le tableau contient des données , utilisez
.length
renverra 0 pour les tableaux vides donc nous avons atteint une vraie valeur falsey.la source
<ul>
balise une fois et une<li>
balise pour chaque élément de la liste. Si la liste est vide, je ne veux même pas que le<ul>
rendu soit, et rendre quelque chose d'autre comme<p>empty list<p>
à l'intérieur de<ul>
n'a pas de sens.[]
est évalué comme faux. La réponse de @Drejc est la bonne réponse par spécification du guidon.Ok c'est plus simple que je ne le pensais:
la source
items
est un tableau vide (c'est-à-dire a une valeur de[]
), il produira une valeur de vérité. Considérant queitems.length
produit une valeur falsey pour un tableau vide. Voir la réponse de @ Duane .if
, mais la documentation Guidons est très claire: « Si ses déclarations d'argumentfalse
,undefined
,null
,""
,0
ou[]
, guidons ne rendra pas le bloc. » J'aurais dû d'abord vérifier les documents.Si vous voulez vérifier si une collection (curseur) est vide ou non, les réponses précédentes ne seront pas utiles, à la place vous devez utiliser la
count()
méthode:la source
Pour tous ceux qui ont besoin d'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.
Utiliser une recherche dans une instruction if résout le problème pour moi. Comme, les réponses ci-dessus n'ont pas résolu mon problème.
Voici mon code,
la source