Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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 handlerbar js扩展算术加法助手_Javascript_Handlebars.js_Helper - Fatal编程技术网

Javascript handlerbar js扩展算术加法助手

Javascript handlerbar js扩展算术加法助手,javascript,handlebars.js,helper,Javascript,Handlebars.js,Helper,我写了一个助手在handlebar js中添加货币。虽然这适用于两个项目,但如何将其扩展到任意数量的项目 i、 e 到,n个项目数。i、 e {{total a b c d}} 如何编写帮助程序以获得类似的内容?这应该是您正在寻找的内容 Handlebars.registerHelper("total", function(a,b) { var nums = [].slice.call(arguments,0,-1); var sum = nums.reduce(f

我写了一个助手在handlebar js中添加货币。虽然这适用于两个项目,但如何将其扩展到任意数量的项目

i、 e

到,n个项目数。i、 e

{{total a b c d}}

如何编写帮助程序以获得类似的内容?

这应该是您正在寻找的内容

Handlebars.registerHelper("total", function(a,b) {    
  var nums = [].slice.call(arguments,0,-1);      
  var sum = nums.reduce(function(prev,next) {
    return prev + Number(next.replace(/[^0-9\.]+/g, ""));
  },0);    
  return "$" + sum.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
});
您可以使用以下上下文和模板在中进行测试

{ 
  "a": "10",
  "b": "20",
  "c": "30",
  "d": "40" 
}

{{total a b c d}}
在助手中,您将有一个附加的
选项
对象以及参数。
选项
对象是最后一个参数。因此,首先我们需要获得一个传递的参数列表,其中不包含
选项

是可在函数内访问的javascript关键字。它是一个类似数组的对象,保存所有传递的参数。因为它没有切片方法,所以我们使用数组的切片方法。我们在参数()的上下文中执行该方法。所以我们用这条线

var nums = [].slice.call(arguments,0,-1);
在接下来的几行中,我们使用内置方法简单地循环数组


代码的其余部分不言自明。

助手可以根据需要接收任意多的输入,下面是一个包含4个输入的示例。你还想做些什么吗?我补充了一点解释。
var nums = [].slice.call(arguments,0,-1);