it-swarm.com.de

Wie finde ich die Arraylänge in den Handlebar-Vorlagen?

Ich habe eine Handlebars-Vorlage, die mit einem Json-Objekt gerendert wird. In diesem Json sende ich ein Array. So was:

var json = {
               "array":["abc","def","ghi","jkl"] 
}

In meiner Vorlage möchte ich nun die Länge dieses Arrays ermitteln. So etwas wie:

{{#each item}}
   {{ array.length }}
{{/each}}

Konnte es nicht in der Dokumentation zu den Lenkern finden.

71
Abhidev

Mein Fehler....

{{array.length}} hat tatsächlich in der Vorlage gearbeitet. Sollte es überprüft/getestet haben, bevor Sie es hier posten.

152
Abhidev

In diesem Fall müssen Sie die übergeordnete Variable von jedem in jedem Block referenzieren:

{{#each array}}
    {{../array.length}}
{{/each}}

Ich denke, dass Ihre Variable, die als "Array" bezeichnet wird, wahrscheinlich auch das Problem zusammenbringt. Angenommen, es wird ein paar andere JSON-Dateien zur Verdeutlichung angegeben:

var json = {
    "fruit":["Apple","orange","banana"]
};

Dann mache ich folgendes:

<ul>
    {{#each fruit}}
        <li>{{this}} {{@index}} {{../fruit.length}}</li>
    {{/each}}
</ul>

Ergäbe:

<ul>
    <li>Apple 0 3</li>
    <li>orange 1 3</li>
    <li>banana 2 3</li>
</ul>
28
Kevin Powell

Sie können einen einfachen Helfer definieren, um damit umzugehen:

Handlebars.registerHelper('get_length', function (obj) {
 return obj.length;
});   

Und dann verwenden Sie es in Ihrer Vorlage zB:

{{get_length some_object}}
3
gesiud

Wenn Sie eine leere Liste testen, um den Inhalt anzuzeigen ....__ In Ember.js, das eine Lenkstange verwendet, können Sie für #each ein anderes Element verwenden.

{{#each blah as |blah|}}

{{else}}
 //   If array is empty
{{/each}}
0
Epirocks

versuche dies:

   {{#each item}}
   {{ json.array.length }}
{{/each}}
0
Amrendra