Javascript 如何在Handlebars helper表达式中将字符串作为参数传递?
我试图创建自己的车把助手,但在传递参数时遇到问题。在上下文中,我试图破解Ghost(),但我怀疑这是一个更普遍的把手问题 工作 首先,一个工作示例。以下是我的模板的相关部分:Javascript 如何在Handlebars helper表达式中将字符串作为参数传递?,javascript,handlebars.js,Javascript,Handlebars.js,我试图创建自己的车把助手,但在传递参数时遇到问题。在上下文中,我试图破解Ghost(),但我怀疑这是一个更普遍的把手问题 工作 首先,一个工作示例。以下是我的模板的相关部分: <h1>{{myHelper}}</h1> 不起作用 下面是我想要达到的目标。模板: <h1>{{myHelper "title"}}</h1> <h3>{{myHelper "slug"}}</h3> 传递字符串(如“title”)的正确方法是
<h1>{{myHelper}}</h1>
不起作用
下面是我想要达到的目标。模板:
<h1>{{myHelper "title"}}</h1>
<h3>{{myHelper "slug"}}</h3>
传递字符串(如“title”)的正确方法是什么,以便在表达式中对其求值
对于任何好奇的Ghost用户,我在
Ghost/core/server.js中的activateTheme()
函数中注册了我自己的助手console.log
输出:
建议当您说{{myHelper“title”}
时,助手的第一个参数是'title'
。如果this.posts[0]
是您感兴趣的帖子,那么您应该看看:
this.posts[0][myData]
当myData
为'title'
时,获取this.posts[0]
的title
属性。请注意,方括号用于访问普通数组(由非负整数索引)和对象(由字符串索引)
在参考中花一点时间可能会有帮助。您的问题是特定于Ghost的,将双引号字符串传递给Handlebar helpers的工作方式很明显。您是否尝试查看助手中的console.log(arguments)
以查看真正传入的内容?以下是console.log(arguments)的结果:{0':'title',1':{hash:{},data:{blog:[Object]}}
。第一个参数0实际上是“title”。那么,您为什么要查看此
?为什么不看看myData
参数呢?很抱歉,您可以看出我是javascript新手,对此感到困惑。我需要this
来访问posts
的子属性。但是您希望从myData
参数中获取帮助者的参数,而不是从this
中的某个内容中获取。
ghost.registerThemeHelper("myHelper", function(myData) {
console.log(this.posts[0].myData); // outputs "undefined" to console
return this.posts[0].myData; // returns nothing
})
{ '0': 'title', '1': { hash: {}, data: { blog: [Object] } } }
this.posts[0][myData]