95

jsonオブジェクトを使用してレンダリングされるHandlebarsテンプレートがあります。このjsonでは、配列を送信しています。このような:

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

今、私のテンプレートで、この配列の長さを見つけたいと思います。何かのようなもの:

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

ハンドルバーのドキュメントで見つかりませんでした。

4

4 に答える 4

206

私の悪い....

{{array.length}}実際にはテンプレート内で機能しました。ここに投稿する前にチェック/テストする必要があります。

于 2013-03-15T09:24:32.050 に答える
46

この場合、各ブロック内からそれぞれの親変数を参照する必要があります。

{{#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>
于 2015-04-07T21:06:47.077 に答える
2

それを処理するための単純なヘルパーを定義できます。

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

そして、それをテンプレートで使用します。例:

{{get_length some_object}}
于 2016-06-30T11:25:06.657 に答える
2

コンテンツを表示するために空のリストをテストしている場合...ハンドルバーを使用するEmber.jsでは、#eachにelseを指定できます。

{{#each blah as |blah|}}

{{else}}
 //   If array is empty
{{/each}}
于 2018-12-20T09:59:32.427 に答える