2015-09-22 39 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}}的副本