我正在尝试创建自己的 Handlebars 助手,但在传递参数时遇到问题。对于上下文,我正在尝试破解 Ghost(http://tryghost.org),但我怀疑这是一个更普遍的 Handlebars 问题。
在职的
首先,一个工作示例。这是我的模板的相关部分:
<h1>{{myHelper}}</h1>
这是我的Handlebars.registerHelper
方法(Ghost 重命名它但它是一样的):
ghost.registerThemeHelper("myHelper", function() {
console.log(this.posts[0].title); // outputs "Welcome to Ghost" to console
return this.posts[0].title; // returns "Welcome to Ghost"
})
不工作
以下是我想要实现的目标。模板:
<h1>{{myHelper "title"}}</h1>
<h3>{{myHelper "slug"}}</h3>
当我尝试将参数传递给方法时,它无法替换变量:
ghost.registerThemeHelper("myHelper", function(myData) {
console.log(this.posts[0].myData); // outputs "undefined" to console
return this.posts[0].myData; // returns nothing
})
传递像“title”这样的字符串以便在表达式中对其进行评估的正确方法是什么?
activateTheme()
对于任何好奇的 Ghost 用户,我在函数中注册了我自己的助手ghost/core/server.js