更新:所选答案中记录的错误已由流星开发者修复
在我的流星应用程序中,我有一些coffescript作为全球帮手:
Handlebars.registerHelper "title",->
Session.get("title")
和一块模板:
{{#each edited}}
<li><a class="left-nav" href="{{entryLink this}}">{{this.title}}</a></li>
{{/each}}
this.title被全局帮助器覆盖,而不是使用this.title上下文。 (我知道,因为如果我删除全局帮助器,那么它很有效)
如果我添加以下内容:
Handlebars.registerHelper "debug", ->
console.log this
console.log this.title
这样的模板:
{{#each edited}}
<li><a class="left-nav" href="{{entryLink this}}">{{this.title}}{{debug}}</a></li>
{{/each}}
this.title正确打印到控制台,但未插入模板
知道为什么会发生这种情况或如何使“this.title”来自本地环境
答案 0 :(得分:3)
对我来说,这似乎是一个错误,因为https://github.com/meteor/meteor/wiki/Handlebars#expressions-with-dots说:
以
this
开头的路径始终引用当前数据上下文的属性,而不是辅助程序。
答案 1 :(得分:0)
我今天在handlebarsjs.com网站上看到了这个。试一试:
Handlebars还允许帮助程序之间解析名称冲突 和数据字段通过以下引用:
{{。/ name}}或{{this / name}} 或{{this.name}}
上述任何一项都会导致名称字段开启 要使用的当前上下文而不是同名的帮助程序。