最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Pass someVar+'a string' to Handlebars.js helper? - Stack Overflow

programmeradmin0浏览0评论

Let's say I have this Handlebars helper:

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

And want to use it like this, where I pass both a string AND a var as the first argument (user.name+' is a cool dude!'):

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

My question: Would that somehow be possible?

Or do I have to add an extra argument for the string (which would feel unnecessary)? Something like this:

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

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

Let's say I have this Handlebars helper:

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

And want to use it like this, where I pass both a string AND a var as the first argument (user.name+' is a cool dude!'):

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

My question: Would that somehow be possible?

Or do I have to add an extra argument for the string (which would feel unnecessary)? Something like this:

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

{{{ someRandomHelperCreatingALink user.name '/a/cool/url' ' is a cool dude!!' }}}
Share Improve this question edited Nov 7, 2014 at 17:49 Deduplicator 45.8k7 gold badges72 silver badges123 bronze badges asked Jul 1, 2013 at 6:30 Kristoffer KKristoffer K 2,05318 silver badges23 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 2

This is not possible because at this point the parameter is just a string. You can either create a second helper to concatenate the strings, either build the string before in a controller

Adding the variable plus string as the first argument doesn't seem to work in my limited testing. If it's always going to be a variable and a string that you're passing to the helper, you might as well just add them, even if it seems unnecessary. But leave out the extraneous mas:

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

But, if you may find yourself passing an arbitrary number of options, you could use an 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." }}}
发布评论

评论列表(0)

  1. 暂无评论