繁体   English   中英

如何在Handlebars帮助器表达式中将字符串作为参数传递?

[英]How to pass a string as an argument in Handlebars helper expression?

我正在尝试创建自己的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”这样的字符串以便在表达式中进行求值的正确方法是什么?

对于任何好奇的Ghost用户,我在ghost/core/server.jsactivateTheme()函数中注册了我自己的帮助器。

argumentsconsole.log输出:

{ '0': 'title', '1': { hash: {}, data: { blog: [Object] } } }

当你说{{myHelper "title"}}时,建议助手的第一个参数是'title' 如果this.posts[0]是您感兴趣的帖子,那么您需要查看:

this.posts[0][myData]

myData'title'时获取this.posts[0]title属性。 请注意,方括号用于访问正常数组(由非负整数索引)和对象(由字符串索引)。

MDN JavaScript参考中的一些时间可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM