将someVar +'一个字符串'传递给Handlebars.js帮助器?

时间:2013-07-01 06:30:05

标签: javascript templates meteor handlebars.js meteor-helper

假设我有这个Handlebars助手:

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

并希望像这样使用它,我传递字符串AND 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!!' }}}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-2)

添加变量加上字符串作为第一个参数似乎在我的有限测试中不起作用。如果它总是一个变量和一个你传递给帮助器的字符串,你也可以添加它们,即使它似乎没必要。但遗漏了无关的逗号:

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

但是,如果您发现自己传递了任意数量的选项,则可以使用options hash

的.js:

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

html的:

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