Antworten:
Das "each" -Tag kann auch einen "else" -Abschnitt enthalten. Die einfachste Form ist also:
{{#each items}}
// render item
{{else}}
// render empty
{{/each}}
Wenn Sie etwas haben, das Sie einmal und nur anzeigen möchten, wenn das Array Daten enthält , verwenden Sie
{{#if items.length}}
//Render
{{/if}}
.length
gibt 0 für leere Arrays zurück, sodass wir einen echten Falsey-Wert erreicht haben.
<ul>
Tag einmal und ein <li>
Tag für jedes Element in der Liste rendern . Wenn die Liste leer ist, möchte ich nicht einmal, dass die <ul>
gerendert wird, und etwas anderes wie <p>empty list<p>
in der zu rendern <ul>
macht keinen Sinn.
[]
als falsch bewertet wird. Die Antwort von @Drejc ist die richtige Antwort gemäß Lenkerspezifikation.
Ok, es ist einfacher als ich dachte:
{{#if items}}
// render items
{{#each items}}
// render item
{{/each}}
{{else}}
// render empty
{{/if}}
items
es sich um ein leeres Array handelt (dh einen Wert von hat []
), wird ein wahrheitsgemäßer Wert erzeugt. Wohingegen items.length
erzeugt einen Falsey Wert für eine leere Arrays. Siehe @ Duanes Antwort .
if
, aber der Lenker Dokumentation ist sehr klar:‚Wenn ihr Argument zurückkehrt false
, undefined
, null
, ""
, 0
, oder []
, Lenker nicht um den Block machen.‘ Ich hätte zuerst die Dokumente überprüfen sollen.
Wenn Sie überprüfen möchten, ob eine Sammlung (Cursor) leer ist oder nicht, sind die vorherigen Antworten nicht hilfreich. Stattdessen müssen Sie die folgende count()
Methode verwenden:
{{#if items.count}}
<p>There is {{items.count}} item(s).</p>
{{else}}
<p>There is nothing</p>
{{/if}}
Für alle, die ein {{#each}} über {{#if}} verwenden müssen (dh eine if-Schleife innerhalb einer for-Schleife). Haben sie drei verschiedene Liste von Arrays.
Die Verwendung einer Suche in einer if-Anweisung löst das Problem für mich. Da die obigen Antworten mein Problem nicht gelöst haben.
Hier ist mein Code,
{{#each OtherRandomItems}}
{{this}}
{{lookup ../AnotherRandomItems @index}}
{{#if (lookup ../RandomItems @index)}}
// render items
{{else}}
// render empty
{{/if}}
{{/each}}
#each
wie ein<ul>
Tag (mit<li>
s im Inneren) umbrochen wird, möchten Sie nicht, dass der leere Status durch das umbrochen wird<ul>
.