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.
Mein Fehler....
{{array.length}}
hat tatsächlich in der Vorlage gearbeitet. Sollte es überprüft/getestet haben, bevor Sie es hier posten.
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>
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}}
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}}
versuche dies:
{{#each item}}
{{ json.array.length }}
{{/each}}