9

假设我有这个 Handlebars 助手:

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

并想像这样使用它,我将一个字符串和一个 var 作为第一个参数 ( user.name+' is a cool dude!') 传递:

{{{ 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!!' }}}
4

2 回答 2

2

这是不可能的,因为此时参数只是一个字符串。您可以创建第二个助手来连接字符串,也可以在控制器之前构建字符串

于 2015-02-05T14:35:23.047 回答
-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" }}}
于 2013-07-01T07:57:49.213 回答