回答:
これを試して:
<ul id="luke_should_be_here">
{{people.1.name}}
</ul>
Expecting 'ID'
{{user.links.websites.1}}または{{user.links.websites.0}}でエラーが発生します
{{ websites.[0] }}
。
次の例では、インデックスの前に追加のドットがあり、期待どおりに機能します。ここで、インデックスの後に別のプロパティが続く場合、角括弧はオプションです。
{{people.[1].name}}
{{people.1.name}}
ただし、以下では角括弧が必要です。
{{#with people.[1]}}
{{name}}
{{/with}}
後者の場合、角括弧なしでインデックス番号を使用すると、次のようになります。
Error: Parse error on line ...:
... {{#with people.1}}
-----------------------^
Expecting 'ID', got 'INTEGER'
余談ですが、括弧は(また)セグメントリテラル構文に使用され、それ以外の場合は無効になる実際の識別子(インデックス番号ではない)を参照します。詳細については、有効な識別子とは何ですか?
(YUIのハンドルバーでテスト済み。)
get
これでヘルパーを使用できます:
(get people index)
ただし、文字列である必要があるインデックスに関するエラーが発生した場合は、次のようにします。
(get people (concat index ""))
{{#with people.1}}
解決策は、使用して、私のために働きましたcom.github.jknack:handlebars:4.1.2
。
ドキュメントに記載されていない機能があなたのゲームでない場合、同じことがここで達成できます:
Handlebars.registerHelper('index_of', function(context,ndx) {
return context[ndx];
});
次にテンプレートで
{{#index_of this 1}}{{/index_of}}
私が手に入れる前に私は上記を書きました
this.[0]
独自のヘルパーを作成せずにハンドルバーを使いすぎているとは思えません。
動的変数を使用したい場合
これは動作しません:
{{#each obj[key]}}
...
{{/each}}
あなたがする必要があります:
{{#each (lookup obj key)}}
...
{{/each}}
ハンドルバーのルックアップヘルパーとハンドルバーの部分式をご覧ください。
最初/最後に取得したい場合は、これを試してください。
{{#each list}}
{{#if @first}}
<div class="active">
{{else}}
<div>
{{/if}}
{{/each}}
{{#each list}}
{{#if @last}}
<div class="last-element">
{{else}}
<div>
{{/if}}
{{/each}}
で配列をループしているときeach
に、現在のアイテムのコンテキストで別の配列にアクセスする場合は、次のようにします。
これがサンプルデータです。
[ { 名前: 'foo'、 attr:['boo'、 'zoo'] }、 { 名前: 'bar'、 attr:['far'、 'zar'] } ]
attr
配列の最初の項目を取得するためのハンドルバーは次のとおりです。
{{#each player}} <p> {{this.name}} </ p> {{#with this.attr}} <p> {{this。[0]}} </ p> {{/ with}} {{/各}}
これは出力されます
<p> foo </ p> <p>ブー</ p> <p>バー</ p> <p>遠い</ p>
this
では代わりに機能するとthis.[0]