handlebars는 logicless를 추구하는 템플릿 언어이기 때문에
기본적으로 제공되는 헬퍼(helper)들은 가장 기본적인 반복, 조건문만을 위한 헬퍼만 존재한다.
하지만 사용하다 보면 어쩔 수 없이 간단한 로직들이 템플릿에 추가될 경우가 있으며,
이럴 경우 커스텀 헬퍼를 추가할 수 있다.
내가 필요했던 커스텀 헬퍼는 자바의 equals와 같이 두 값을 비교할 수 있는 헬퍼이다.
조건문을 위한 기본 헬퍼는 아래와 같이 true/false인지 null/notNull 만으로 분기할 수 있는 헬퍼만 제공된다.
{{#if title}}
...
{{/if}}
커스텀 헬퍼를 추가하기 위해서는 Handlebars.registerHelper 을 사용하면 된다.
<script>
Handlebars.registerHelper('ifCond', function(v1, v2, options) {
if (v1 === v2) {
return options.fn(this);
}
return options.inverse(this);
});
</script>
위와 같이 ifCond라는 헬퍼를 추가한 후 실제 사용하는 것은 아래처럼 하면 된다.
GRADE값이 1과 같은 지를 비교하는 예제이다.
{{#each this}}
{{#ifCond GRADE "1"}}
<span name="gradeAndClassName" class="badge badge-pill badge-light" data-result='{{@index}}'>{{GRADE}}-{{CLASS_NM}}</span>
{{/ifCond}}
{{/each}}
'이번주 학교 시간표' 카테고리의 다른 글
[underscore.js] useful javascript library(1) (0) | 2020.02.17 |
---|---|
[handlebarsjs] simple templating language (0) | 2020.02.17 |
[jQuery UI] Date Picker (0) | 2020.02.16 |
[openAPI] 나이스 교육정보 개방 포털 API (0) | 2020.02.16 |