Jor*_*dan 1 json handlebars.js
我使用PHP文件从数据库中提取数据并将其作为JSON返回.然后我想使用JSON数据作为Handlebars模板的上下文.我的问题是我似乎无法使用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"
}
]
Run Code Online (Sandbox Code Playgroud)
这是我的Handlebars模板:
{{#each}}
<p>{{location}}</p>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
{{#each}}
<p>{{this.location}}</p>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
我怀疑为什么这不起作用是#each助手不能像我正在尝试那样运行,而是必须像这样调用:{{#each something}}.如果是这种情况,是否有任何简单的方法可以将密钥添加到JSON数据中,以便它采用以下形式:
something: [
{
...
},
{
...
}
]
Run Code Online (Sandbox Code Playgroud)
如果我的怀疑是错误的,我怎样才能将#each helper与我目前提供的JSON一起用作模板上下文?
更新:找到解决此问题的方法,我只需要更改模板调用
jQuery(".events").html(Handlebars.templates['Events'](data));
Run Code Online (Sandbox Code Playgroud)
至
jQuery(".events").html(Handlebars.templates['Events']({events: data}));
Run Code Online (Sandbox Code Playgroud)
这意味着我可以使用{{#each events}}.
我遇到了同样的问题,并使用' this '关键字解决了这个问题.
{{#each this}}
<p>{{this.location}}</p>
{{/each}}
Run Code Online (Sandbox Code Playgroud)