핸들 바 js에 통화를 추가하는 도우미를 작성했습니다. 이것은 두 가지 항목에 대해 작동하지만이를 여러 항목으로 확장하려면 어떻게해야합니까?
즉,
{{total a b}}
Handlebars.registerHelper("total", function(a,b) {
return "$"+(Number(a.replace(/[^0-9\.]+/g,"")) + Number(b.replace(/[^0-9\.]+/g,""))).toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
});
to, n 개의 항목. 즉,
{{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, '$&,');
});
다음 컨텍스트 및 템플릿을 사용하여 tryhandlebarsjs 에서 이를 테스트 할 수 있습니다.
{
"a": "10",
"b": "20",
"c": "30",
"d": "40"
}
{{total a b c d}}
도우미 내부 options
에는 인수와 함께 추가 개체 가 있습니다 . options
개체는 마지막 인자이다. 따라서 먼저 전달 된 인수 목록을 가져와야합니다 options
.
arguments
함수 내에서 액세스 할 수있는 자바 스크립트 키워드입니다. 전달 된 모든 인수를 보유하는 객체와 같은 배열입니다. slice 메소드가 없기 때문에 array의 slice 메소드를 사용하고 있습니다. 인수 ( call
) 의 컨텍스트에서 해당 메서드를 실행합니다 . 그래서 우리는이 선을 사용합니다
var nums = [].slice.call(arguments,0,-1);
다음 줄에서는 내장 reduce
메서드를 사용하여 배열을 반복합니다 .
나머지 코드는 설명이 필요하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다