【问题标题】:Handlebars.js: Is it possible to pass multiple hashes as arguments to a Handlebars helper?Handlebars.js:是否可以将多个哈希作为参数传递给 Handlebars 助手?
【发布时间】:2012-04-27 16:06:03
【问题描述】:

假设我已经声明了跟随助手

Handlebars.registerHelper("linkTo", function(request, params) {
    return window.linkTo(request, params);
});

我如何(如果可能的话)在视图中做这样的事情(语法不正确,只是为了展示)

<a href="{{link_to module='products' controller='view', product=product.id artist= artist.id}}">foo</a>

逗号只是表示两个哈希之间的分隔。

【问题讨论】:

    标签: javascript template-engine handlebars.js


    【解决方案1】:

    ,由于 Handlebars.js 使用参数的方式,它不能分隔多个哈希。

    【讨论】:

      【解决方案2】:

      如果您能看到将参数放入可以作为对象文字的一部分传递的结构的方法,那么我知道这将起作用。例如:

      { 
        "params" : {
          "module" : "products",
          "controller" : "view",
          "product" : 5,
          "artist" : 25
        }
      }
      

      加上这个助手:

      Handlebars.registerHelper("link_to", function(params) {
        var result = "";
        var insertAmpersand = false;
      
        for (var prop in params) {
            if (insertAmpersand) {
                result += "&";
            } else {
                insertAmpersand = true;
            }
      
            result += prop + "=" + params[prop];
        }
        return result;
      });
      

      可以这样调用:

      {{link_to params}}
      

      生成:

      module=products&controller=view&product=5&artist=25
      

      显然,您希望对其进行改进,以使事物周围有正确的引号,等等。但是这样的东西对您有用吗?

      【讨论】:

      • 约翰,不幸的是,这并没有帮助。我需要将请求和参数分开,否则助手不知道属性所属的位置。您的解决方案只是假设所有都是参数的一部分。目前我已经实现了解决方法,在控制器内准备请求对象并使用参数的“选项”哈希(在视图循环中动态填充)。由于 Handlebars.js 使用参数的方式并且无法分离多个哈希,我的问题的答案似乎是“否”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2014-09-23
      • 2015-05-24
      • 1970-01-01
      相关资源
      最近更新 更多