Відповіді:
Тег "кожен" також може приймати розділ "else". Тож найпростіша форма:
{{#each items}}
// render item
{{else}}
// render empty
{{/each}}
Якщо у вас є щось, що ви хочете відобразити один раз, і лише якщо масив має дані , використовуйте
{{#if items.length}}
//Render
{{/if}}
.length
поверне 0 для порожніх масивів, щоб ми досягли реального значення фальси.
<ul>
тег один раз та <li>
тег для кожного елемента у списку. Якщо список порожній, я навіть не хочу, <ul>
щоб його відображали, а рендеринг чогось іншого, як <p>empty list<p>
всередині <ul>
, не має сенсу.
Гаразд, це простіше, ніж я думав:
{{#if items}}
// render items
{{#each items}}
// render item
{{/each}}
{{else}}
// render empty
{{/if}}
if
, але документація Рулі дуже ясно:" Якщо його аргумент повертається false
, undefined
, null
, ""
, 0
, або []
, Рулі не роблять блок. " Я повинен був перевірити документи в першу чергу.
Якщо ви хочете перевірити, чи колекція (курсор) порожня чи ні, попередні відповіді не будуть корисними, натомість ви повинні використовувати count()
метод:
{{#if items.count}}
<p>There is {{items.count}} item(s).</p>
{{else}}
<p>There is nothing</p>
{{/if}}
Для всіх, кому потрібно використовувати {{#each}} вгорі {{#if}} (тобто цикл if у циклі for). Чи є у них три різні списки масивів.
Використання пошуку всередині оператора if вирішує проблему для мене. Оскільки, наведені вище відповіді не вирішили мого питання.
Ось мій код,
{{#each OtherRandomItems}}
{{this}}
{{lookup ../AnotherRandomItems @index}}
{{#if (lookup ../RandomItems @index)}}
// render items
{{else}}
// render empty
{{/if}}
{{/each}}
#each
, як<ul>
тег (з<li>
s всередині), ви не хочете, щоб порожній стан був завернутий<ul>
.