Handlebars.js:是否可以将多个哈希作为参数传递给Handlebars助手?

时间:2012-04-27 16:06:04

标签: javascript template-engine handlebars.js

假设我已经宣布了以下帮助

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>

逗号只是象征着两个哈希之间的分离。

2 个答案:

答案 0 :(得分:1)

NO ,由于Handlebars.js使用参数的方式,它无法分隔多个哈希值。

答案 1 :(得分:0)

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

{ 
  "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

显然你会想要改进它,以便事物周围有正确的引号,等等。但是那样的东西会对你有用吗?