Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js:是否可以将多个散列作为参数传递给Handlebar助手?_Javascript_Template Engine_Handlebars.js - Fatal编程技术网

Javascript js:是否可以将多个散列作为参数传递给Handlebar助手?

Javascript js:是否可以将多个散列作为参数传递给Handlebar助手?,javascript,template-engine,handlebars.js,Javascript,Template Engine,Handlebars.js,假设我已经声明了以下帮助程序 Handlebars.registerHelper("linkTo", function(request, params) { return window.linkTo(request, params); }); 我如何(如果可能)在视图中执行类似操作(语法不正确,仅用于演示目的) 逗号只是表示两个散列之间的分隔。如果您可以将参数放入一个可以作为对象文本的一部分传递的结构中,那么我知道这会起作用。例如: { "params" : { "m

假设我已经声明了以下帮助程序

Handlebars.registerHelper("linkTo", function(request, params) {
    return window.linkTo(request, params);
});
我如何(如果可能)在视图中执行类似操作(语法不正确,仅用于演示目的)



逗号只是表示两个散列之间的分隔。

如果您可以将参数放入一个可以作为对象文本的一部分传递的结构中,那么我知道这会起作用。例如:

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

很明显,您希望对其进行细化,使其周围有正确的引号,等等。但类似的内容对您有用吗?

,因为handlebar.js使用参数的方式无法分离多个散列。

John,不幸的是,这没有帮助。我需要将请求和参数分开,否则助手不知道属性属于哪里。您的解决方案只是假设所有都是params的一部分。目前,我已经实现了一种变通方法,在该方法中,我在控制器内准备请求对象,并使用参数的“选项”散列(在视图的循环中动态填充)。我的问题的答案似乎是“否”,因为handlebar.js使用参数的方式,无法分离多个散列。
module=products&controller=view&product=5&artist=25