【问题标题】: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!!' }}}

【问题讨论】:

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


    【解决方案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。 (现在从我的示例中删除了逗号,将代码直接写到编辑器中而没有真正考虑:))谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 2021-11-20
      • 2018-07-23
      • 2013-08-14
      相关资源
      最近更新 更多