将 someVar+'a string' 传递给 Handlebars.js 助手?

Posted

技术标签:

【中文标题】将 someVar+\'a string\' 传递给 Handlebars.js 助手?【英文标题】:Pass someVar+'a string' to Handlebars.js helper?将 someVar+'a string' 传递给 Handlebars.js 助手? 【发布时间】:2013-06-28 05:25:05 【问题描述】:

假设我有这个 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!!' 

【问题讨论】:

【参考方案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" 

【讨论】:

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

以上是关于将 someVar+'a string' 传递给 Handlebars.js 助手?的主要内容,如果未能解决你的问题,请参考以下文章

C ++将字符串传递给映射

如何使用 LinkedList<String> 内联将值传递给函数? [复制]

我可以将 String[] 列表传递给 Freemarker 吗?

我可以将 std::string 传递给 DLL 吗?

将 List<string> 传递给 SQL 参数

魔法方法特性和迭代器