handlerbars.js проверить, если список пуст

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

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

{{/list}}



{{#each items}}

{{/each}}
</code>

Ответы на вопрос(5)

Решение Вопроса

самая простая форма:

{{#each items}}
// render item
{{else}}
// render empty
{{/each}}
 Justus Romijn01 дек. 2017 г., 15:58
OMG, что я никогда не видел эту функцию! Одного возражения недостаточно

Если у вас есть то, что вы хотите отобразитьодин ра а также только если массив имеет da, ta, используйте

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

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

 Stim14 мар. 2016 г., 15:01
Этот ответ зависит от конкретной реализации. handlebars docs укажите, что[] оценивается как ложное. Ответ @Drejc - это правильный ответ по спецификации руля.
 Fuad Saud25 мар. 2015 г., 00:18
Простой случай: я хочу сделать<ul> пометить один раз и<li> тег для каждого элемента в списке. Если список пуст, я даже не хочу<ul> для рендеринга и рендеринга чего-то другого, наприм<p>empty list<p> внутри<ul> не имеет смысла.
 Danish30 янв. 2017 г., 15:06
спасибо, чувак, это лучшее решение, чем registerHelper.
 Drejc07 февр. 2014 г., 23:00
Оба ответа верны и работают, и они отвечают на вопрос. Который был, как отображать что-то, когда в массиве нет данных. А не наоборот
 radtek18 окт. 2014 г., 22:59
Нет, я согласен, это правильный ответ. Он не включает цикл for.

Ладно, проще, чем я думал:

{{#if items}}
// render items

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

{{else}}
// render empty
{{/if}}
 Drejc10 дек. 2015 г., 21:19
Ххх ... с тех пор прошло 3 года ... возможно, реализация изменилась или у меня просто не было массива []. Насколько я помню, это сработало для меня.
 gfullam09 дек. 2015 г., 21:02
Еслиitems является пустым массивом (т.е. имеет значение[]), это даст истинную ценность. В то время какitems.length выдает значение фальси для пустого массива. Видеть@ Дуэйн ответ.
 gfullam11 дек. 2015 г., 15:43
Вы правы. Я упреждающе прокомментировал на основе поведения нативного JS 'if, но Ручная документация очень ясно: «Если его аргумент возвращаетfalse, undefined, null, "", 0, или[], Руль не будет отображать блок. "Я должен был сначала проверить документы.

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

{{#if items.count}}
    <p>There is {{items.count}} item(s).</p>
{{else}}
    <p>There is nothing</p>
{{/if}}
 Zaur Nasibov12 сент. 2015 г., 00:14
А как это должно работать для простых массивов?
 Karl.S12 сент. 2015 г., 08:05
@ BasicWolf - нет, count работает с курсором, если вместо него используется длина массива.
 Ryan Walton01 нояб. 2016 г., 23:06
Это прекрасно работает для проверки между массивом и объектом и для их обработки по-разному.

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

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

Вот мой код,

{{#each OtherRandomItems}}

  {{this}}

  {{lookup ../AnotherRandomItems @index}}

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

{{/each}}

Ваш ответ на вопрос