Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Handlebars helper表达式中将字符串作为参数传递?_Javascript_Handlebars.js - Fatal编程技术网

Javascript 如何在Handlebars helper表达式中将字符串作为参数传递?

Javascript 如何在Handlebars helper表达式中将字符串作为参数传递?,javascript,handlebars.js,Javascript,Handlebars.js,我试图创建自己的车把助手,但在传递参数时遇到问题。在上下文中,我试图破解Ghost(),但我怀疑这是一个更普遍的把手问题 工作 首先,一个工作示例。以下是我的模板的相关部分: <h1>{{myHelper}}</h1> 不起作用 下面是我想要达到的目标。模板: <h1>{{myHelper "title"}}</h1> <h3>{{myHelper "slug"}}</h3> 传递字符串(如“title”)的正确方法是

我试图创建自己的车把助手,但在传递参数时遇到问题。在上下文中,我试图破解Ghost(),但我怀疑这是一个更普遍的把手问题

工作 首先,一个工作示例。以下是我的模板的相关部分:

<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]