2015-09-22 80 views
0

我我的木偶設置把手傭工在{{#each}}迭代器不工作

templateHelpers:function(){ 
    return jQuery.extend(this,{ 
     '$':function (text){ 
      return Handlebars.compile('{{'+text+'}}')(this); 
     } 
    }); 
}, 

這使我能夠做到這一點

{{$ collection.display}} 

內做出了一個名爲「$」模板幫手這將解決collection.display,通常是名稱,但可能是一些其他字段名稱,如service_id,然後我的處理程序將解決該問題。 所以我有間接的,而且比打字

{{{{collection.display}}}} 

都好便宜。唯一的障礙是,當我堅持下去的{{#each項目}}循環內,

{{#each items}} 
       <option value="{{this.id}}">{{$ ../collection.display}} </option> 
{{/each}} 

它吹了

Error: Missing helper: "$" 

需要注意的是它不事關什麼我$後把裏面的時候{{$ anything}}塊會失敗,幫手不在那裏。

+0

爲什麼使用'../ collection.display'?具體說明爲什麼雙點符號?我認爲這是問題,在任何情況下,我不覺得這非常有用,除非我沒有得到它的用例 –

+0

你需要..到達父上下文,這是集合是可用的地方,我可以去@根。這不是問題,相信我..我有一個模板,我想用於多個表格,但我想在選擇列表中顯示的字段是不同的。這通常是「名稱」,但我可能想在我的收藏中覆蓋它。或型號。 –

+0

是的好,我仍然認爲這是問題,如何去你的助手循環內的根,嘗試檢測你的助手中的雙點(或檢查它實際上是通過那裏),並採取相應的行動 –

回答

1

這可能是一個不同步的問題。在我的處理程序被應用之前,迭代器塊的主體似乎正在被編譯。 無論如何,如果我只是去

Handlebars.registerHelper('$', function (text){ 
    return Handlebars.compile('{{'+text+'}}')(this); 
}); 

在我開始宣佈任何木偶意見,那麼它的工作原理,所以不知道這計數作爲牽線木偶,把手或當然我的錯誤。
這是Handlebar helper inside {{#each}}的副本