1. ホーム
  2. javascript

[解決済み] ハンドルバーでアクセス配列の項目にインデックスでアクセスするにはどうしたらいいですか?

2022-02-19 01:24:21

質問内容

ハンドルネーム・テンプレート内で、配列内の項目のインデックスを指定しようとしています。

{
  people: [
    {"name":"Yehuda Katz"},
    {"name":"Luke"},
    {"name":"Naomi"}
  ]
}

を使用しています。

<ul id="luke_should_be_here">
{{people[1].name}}
</ul>

もし上記が不可能なら、配列の中の特定の項目にアクセスするヘルパーをどのように書けばよいのでしょうか?

どのように解決するのですか?

以下のとおりです。 の前にドットを追加してください。 期待通りに動作します。ここで、角括弧はインデックスの後に他のプロパティが続く場合は省略可能です。

{{people.[1].name}}
{{people.1.name}}

ただし、角括弧は 必須 になります。

{{#with people.[1]}}
  {{name}}
{{/with}}

後者の場合、角括弧を付けずにインデックス番号を使用すると、1が得られます。

Error: Parse error on line ...:
...     {{#with people.1}}                
-----------------------^
Expecting 'ID', got 'INTEGER'

余談ですが、括弧は(も)使用されます。 セグメントリテラル構文 インデックス番号ではない)実際の識別子を参照するためで、そうでなければ無効となる。詳しくは 有効な識別子とは何ですか?

(YUIのHandlebarsでテストしています。)

2.xx アップデート

を使用できるようになりました。 get ヘルパーを使用します。

(get people index)

indexは文字列でなければならないというエラーが発生した場合は、そうしてください。

(get people (concat index ""))