Javascript handlerbar js扩展算术加法助手
我写了一个助手在handlebar js中添加货币。虽然这适用于两个项目,但如何将其扩展到任意数量的项目 i、 e 到,n个项目数。i、 eJavascript 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
{{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);