如何将someVar+'a string'传递给Handlebars.js帮助程序?

9

假设我有这个Handlebars助手:

Handlebars.registerHelper('someRandomHelperCreatingALink', function(passedVarAndString, url) {
    return '<a href="'+url+'">'+passedVarAndString+'</a>';
});

我想这样使用它,其中我将一个字符串和一个变量作为第一个参数传递 (user.name+' 是个酷家伙!'):

{{{ someRandomHelperCreatingALink user.name+' is a cool dude!!' '/a/cool/url' }}}

我的问题:这是否有可能呢?

还是说我需要为字符串添加额外的参数(这会感觉不必要)?类似于这样:

Handlebars.registerHelper('someRandomHelperCreatingALink', function(passedVarAndString, url, extraUnnecessary) {
    return '<a href="'+url+'">'+passedVarAndString+extraUnnecessary+'</a>';
});

{{{ someRandomHelperCreatingALink user.name '/a/cool/url' ' is a cool dude!!' }}}
2个回答

2
这是不可能的,因为此时参数只是一个字符串。您可以创建第二个辅助函数来连接字符串,或者在控制器中先构建字符串。

-2

在我的有限测试中,将变量加字符串作为第一个参数似乎不起作用。如果你总是要传递一个变量和一个字符串给这个帮助程序,即使看起来没有必要,你也可以把它们加起来。但是省略多余的逗号:

{{{ someRandomHelperCreatingALink user.name '/a/cool/url' ' is a cool dude!!' }}}

但是,如果你发现自己需要传递任意数量的选项,你可以使用一个选项哈希

.js:

  Handlebars.registerHelper('createLink', function(options) {
    return '<a href="' + options.hash.url + '">' + options.hash.name + '</a>';
  });

.html:

  {{{ createLink name="Meteor" url="http://meteor.com" }}}

"在我的有限测试中,将变量加字符串作为第一个参数似乎不起作用。" -> 这正是我想要实现的,因为大多数情况下我只会传递一个字符串,但是在应用程序中有一次我需要传递一个字符串+变量。(现在从我的示例中删除了逗号,直接在编辑器中编写代码而没有真正思考:) ) 谢谢! - Kristoffer K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接