2013-03-15 47 views
63

我有一个使用json对象呈现的Handlebars模板。在这个JSON中,我发送一个数组。像这样:如何查找手柄模板内的数组长度?

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

现在在我的模板中我想查找这个数组的长度。例如:

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

无法在Handlebars文档中找到它。

回答

129

我的坏....

{{array.length}}实际上在模板中工作。在发布之前应该检查/测试它。

+24

好吧,你救了我不得不测试它,所以谢谢。 :) – 2013-06-18 17:32:04

+0

它不适合我:( – Anenth 2015-01-05 08:55:17

+5

这对于任何想要的任何人的Mandrills把手味道都不起作用我还没有找到合适的替代品 – oneirois 2016-02-05 21:26:55

0

试试这个:

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

在这种情况下,你需要从每块中引用的每个父变量:

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

我觉得你的变量被命名为“阵”是可能也会混淆这个问题。让我们假设一些不同的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> 
+1

我认为列表项目是'apple 0 3 ''橙色1 3''香蕉2 3' – Paul 2015-05-30 22:04:02

+0

@Paul,你是正确的,示例更新以反映正确的输出 – 2015-06-29 20:26:04

+0

相关问题:当​​它是当前管线值时,如何获得数组长度? – Gyscos 2015-10-09 20:38:44

1

您可以定义简单的辅助来处理它:

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

然后使用它在你的模板,例如:

{{get_length some_object}}