1

ヘルパーを使用しないように、このハンドルバー テンプレートを単純化する方法があるかどうか疑問に思っていました。

データ:

{
    games:[game: {teamID:1}]
    teams:{1:{name:'Team Name'}}
}

{{#each games}}テンプレート ( :内にあることに注意してください。

{{#teamFetch ../this teamID 'name'}}{{/teamFetch}}

ヘルパー:

Handlebars.registerHelper('teamFetch', function(season, teamid, property){
    return season.teams[teamid][property];
});

私はハンドルバーを初めて使用しますが、これが、ゲーム内の ID に基づいてシーズン中に特定のチームにアクセスし、そのチームのプロパティを取得する方法を理解できる唯一の方法でした。ヘルパー関数を必要としない簡単な方法はありますか?

4

1 に答える 1

4

ヘルパーを使わずに回避する方法はありません。これは、Handlebars では、変数パスを指定するためにセグメント リテラル表記で変数を渡すことができないためです。Expressions に関するハンドルバーのドキュメント:

有効な識別子ではないプロパティを参照するには、セグメントリテラル表記を使用できます: {{#each article.[10].comments}} {{/each}}

したがって...理想的には、次のようなことができるようにしたいと考えています。

{{#each games}}
        {{../teams.[teamID].name}}
{{/each}}

しかし、現時点では、の値をteamIDinto に渡す方法はありません../teams.[ ].name

次のことしかできません。

{{#each games}}
        {{../teams.[0].name}}
{{/each}}

値のみを解釈できます。0、変数を解決できません。teamID

于 2013-04-02T05:01:10.957 に答える