Handlerbars.js проверить, нет ли списка

Есть ли способ в шаблоне Handlebars.js проверить, является ли коллекция или список пустой или пустой, перед тем, как идти и итерировать через список/коллекцию?

// if list is empty do some rendering ... otherwise do the normal
{{#list items}}

{{/list}}



{{#each items}}

{{/each}}

Ответ 1

В теге "каждый" также может быть раздел "else". Итак, самая простая форма:

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

Ответ 2

Супер опоздал на вечеринку, но мне не нравится принятый ответ (что, если у меня есть что-то, чтобы отображать один раз, но только если у массива есть данные?), и второй ответ не кажется мне функциональным. Возможно, это поможет некоторым будущим разработчикам.

{{#if items.length}}
    //Render
{{/if}}

.length возвращает 0 для пустых массивов, чтобы мы достигли реального значения false.

Ответ 3

Хорошо, это проще, чем я думал:

{{#if items}}
// render items

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

{{else}}
// render empty
{{/if}}

Ответ 4

Если вы хотите проверить, является ли коллекция (курсор) пустой или нет, предыдущие ответы не будут полезны, вместо этого вы должны использовать метод count():

{{#if items.count}}
    <p>There is {{items.count}} item(s).</p>
{{else}}
    <p>There is nothing</p>
{{/if}}

Ответ 5

Для тех, кто должен использовать {{#each}} поверх {{#if}} (т.е. цикл if внутри цикла for). Есть ли у них три разных списка массивов.

Использование поиска внутри оператора if решает проблему для меня. Как, вышеупомянутые ответы не решили мою проблему.

Вот мой код,

{{#each OtherRandomItems}}

  {{this}}

  {{lookup ../AnotherRandomItems @index}}

  {{#if (lookup ../RandomItems @index)}}
  // render items
  {{else}}
  // render empty
  {{/if}}

{{/each}}