1

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}));

つまり、{{#各イベント}} を使用できるということです。

4

1 に答える 1

8

私は同じ問題を抱えていて、「this」キーワードを使用して解決しました。

{{#each this}}
  <p>{{this.location}}</p>
{{/each}}
于 2013-07-22T15:08:09.590 に答える