Existe uma maneira no Handlebars.js de modelo para verificar se a coleção ou lista é nula ou vazia, antes de ir e iterar pela lista / coleção?
// if list is empty do some rendering ... otherwise do the normal
{{#list items}}
{{/list}}
{{#each items}}
{{/each}}
handlebars.js
Drejc
fonte
fonte
#each
, como uma<ul>
tag (com<li>
s dentro), não deseja que o estado vazio seja quebrado pelo<ul>
.Se você tiver algo que deseja exibir uma vez e somente se a matriz tiver dados , use
.length
retornará 0 para matrizes vazias, portanto, atingimos um valor real de falsey.fonte
<ul>
tag uma vez e uma<li>
tag para cada item da lista. Se a lista estiver vazia, eu nem quero que o<ul>
renderize, e renderizar algo como<p>empty list<p>
dentro<ul>
dele não faz sentido.[]
é avaliado como falso. A resposta do @Drejc é a resposta correta pela especificação do guidão.Ok, é mais simples do que eu pensava:
fonte
items
for uma matriz vazia (ou seja, tem um valor de[]
), ela produzirá um valor verdadeiro. Considerando queitems.length
produz um valor de falsey para uma matriz vazia. Veja a resposta de @ Duane .if
, mas a documentação Handlebars é muito clara: 'Se seu argumento retornosfalse
,undefined
,null
,""
,0
, ou[]
, guidão não vai tornar o bloco.' Eu deveria ter verificado os documentos primeiro.Se você deseja verificar se uma coleção (cursor) está vazia ou não, as respostas anteriores não serão úteis. Em vez disso, você deve usar o
count()
método:fonte
Para quem precisa usar um {{#each}} em cima de {{#if}} (ou seja, um loop if dentro de um loop for). Eles têm três listas diferentes de matrizes.
Usar uma pesquisa dentro de uma instrução if resolve o problema para mim. Como, as respostas acima não resolveram meu problema.
Aqui está o meu código,
fonte