PHP ファイルを使用してデータベースからデータを取得し、JSON として返します。次に、Handlebars テンプレートのコンテキストとして JSON データを使用したいと考えています。私の問題は、Handlebars の "{{#each}}" ヘルパーが、PHP ファイルによって返される JSON を処理するように見えないことです。
返される JSON の例を次に示します。
[
{
"id": "3",
"type": "Abseiling",
"title": "Abseiling Adventure",
"location": "Glenrock State Conservation Area",
"date": "2012-12-18 00:00:00",
"length": "2 hours",
"price": "50"
},
{
"id": "1",
"type": "Abseiling",
"title": null,
"location": "Glenrock State Conservation Area",
"date": "2013-02-10 00:00:00",
"length": "3 hours",
"price": "70"
}
]
これが私のHandlebarsテンプレートです:
{{#each}}
<p>{{location}}</p>
{{/each}}
私も試しました:
{{#each}}
<p>{{this.location}}</p>
{{/each}}
これが機能しない理由についての私の疑いは、#each ヘルパーが私が試みているように実行できず、{{#each something}} のように呼び出さなければならないことです。この場合、JSON データにキーを追加して次の形式にする簡単な方法はありますか。
something: [
{
...
},
{
...
}
]
私の疑いが間違っている場合、現在テンプレート コンテキストとして提供している JSON で #each ヘルパーを使用するにはどうすればよいですか?
更新:この問題の解決策が見つかりました。テンプレートの呼び出しを変更するだけで済みました。
jQuery(".events").html(Handlebars.templates['Events'](data));
に
jQuery(".events").html(Handlebars.templates['Events']({events: data}));
つまり、{{#各イベント}} を使用できるということです。