如何在Handlebar模板中找到数组长度?

时间:2013-03-15 09:19:21

标签: javascript templates handlebars.js

我有一个使用json对象渲染的Handlebars模板。在这个json我发送一个数组。像这样:

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

现在在我的模板中我想找到这个数组的长度。类似的东西:

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

无法在Handlebars文档中找到它。

5 个答案:

答案 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}}