2013-03-15 114 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}}