2012-12-01 29 views
1

我正在使用PHP文件從數據庫中提取數據並將其作爲JSON返回。然後,我想使用JSON數據作爲Handlebars模板的上下文。我的問題是,我似乎無法讓Handlebars的「{{#each}}」助手使用PHP文件返回的JSON。使用Handlebars#每個助手在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" 
    } 
] 

這裏是我的把手模板:

{{#each}} 
<p>{{location}}</p> 
{{/each}} 

我也有嘗試:

{{#each}} 
<p>{{this.location}}</p> 
{{/each}} 

我懷疑爲爲什麼這不起作用是#each助手不能像我想要的那樣運行,而是必須像這樣調用:{{#每個東西}}。如果是這樣的話,有沒有簡單的方法來一鍵添加到JSON數據,以便它在這種形式:

something: [ 
    { 
     ... 
    }, 
    { 
     ... 
    } 
] 

如果我的懷疑是錯的,我怎麼能使用#each助手與JSON我目前提供作爲模板上下文?

UPDATE:找到了一個解決這個問題,我只是不得不模板調用從

jQuery(".events").html(Handlebars.templates['Events'](data)); 

改變

jQuery(".events").html(Handlebars.templates['Events']({events: data})); 

這就意味着然後我可以使用{{#each事件}}。

+0

你可以把你的**更新**下來,答案和接受的答案(但我認爲你需要等待24小時才能接受你自己的答案),可以幫助人們在未來的搜索類似的事情。把手需要在模板中通過名稱來引用事物,模板函數的對象參數基本上是一個小小的可移植的名稱空間,它允許您給「數據」命名。 –

回答

7

我有同樣的問題,並通過使用'這個'關鍵字來解決它。

{{#each this}} 
    <p>{{this.location}}</p> 
{{/each}} 
+0

給這個人正確的答案。保存了我的夜晚 - 謝謝! –

相關問題