我有一个使用json对象渲染的Handlebars模板。在这个json我发送一个数组。像这样:
var json = {
"array":["abc","def","ghi","jkl"]
}
现在在我的模板中我想找到这个数组的长度。类似的东西:
{{#each item}}
{{ array.length }}
{{/each}}
无法在Handlebars文档中找到它。
答案 0 :(得分:158)
我的坏......
{{array.length}}
实际上在模板中工作。应该在发布之前检查/测试它。
答案 1 :(得分:28)
在这种情况下,您需要从每个块中引用每个的父变量:
{{#each array}}
{{../array.length}}
{{/each}}
我认为你的变量名为" array"也许可能会混淆这个问题。让我们假设一些不同的JSON来澄清:
var json = {
"fruit":["apple","orange","banana"]
};
然后这样做:
<ul>
{{#each fruit}}
<li>{{this}} {{@index}} {{../fruit.length}}</li>
{{/each}}
</ul>
会屈服:
<ul>
<li>apple 0 3</li>
<li>orange 1 3</li>
<li>banana 2 3</li>
</ul>
答案 2 :(得分:3)
您可以定义简单的帮助程序来处理它:
Handlebars.registerHelper('get_length', function (obj) {
return obj.length;
});
然后在模板中使用它,例如:
{{get_length some_object}}
答案 3 :(得分:0)
试试这个:
{{#each item}}
{{ json.array.length }}
{{/each}}
答案 4 :(得分:0)
如果您要测试一个空列表以显示内容... 在使用车把的Ember.js中,您可以为#each添加一个else。
{{#each blah as |blah|}}
{{else}}
// If array is empty
{{/each}}