2013-07-15 3 views
22

Handlebars.js에 이상한 동작이 있습니다. true의 값을 캐릭터 라인 "true"로, 값을 false로 "false"로 렌더링합니다.거짓 일 때 핸들 바가 부울 변수를 렌더링하지 않습니다.

var booleanTestTrue = true; 
var booleanTestFalse = false; 

템플릿 :

True: true 
False: (empty string) 

이 문제를 해결하기 위해 어떤 방법이 있나요 :

True: {{booleanTestTrue}} 
False: {{booleanTestFalse}} 

가 렌더링? 아니면 도우미를 써야합니까?

+0

여기 repo 문제 : https://github.com/wycats/handlebars.js/issues/827 – bentael

답변

6

문자열을 인쇄하려면 문자열을 전달해야합니다. (| 출력에 문자열을 #unless 헬퍼는 #if을 사용하지 않는)

false.toString(); 

그렇지, 그래 당신은 도우미가 필요합니다.

디버깅 목적으로이 값을 인쇄하려면 {{log booleanTestFalse}}을 사용하십시오.

20

당신은 간단한 블록 도우미를 사용하고 같은 # 만약 구현할 수있는 다음

{{#if isTrue}} 
     true 
{{else}} 
     false 
{{/if}} 
3

나는이 놀랄, 그것을 위해 간단한 도우미를 작성 결국되었습니다

Handlebars.registerHelper('toString', function returnToString(x){ 
    return (x === void 0) ? 'undefined' : x.toString(); 
}); 

당신 다음과 같이 호출합니다 :

True: {{toString booleanTestTrue}} 
False: {{toString booleanTestFalse}} 

대부분의 시나리오에서 당신은 단순히 return x.toString(). 추가 검사를 수행하면 정의되지 않은 값에 toString을 호출하지 않아도됩니다.

0

바니의 대답과 비슷하지만 null도 지원합니다. 다음과 같이

Handlebars.registerHelper('toString', function (v) { 
    return '' + v; 
}); 

당신은 다음을 호출하는 것입니다 : 당신이 더 많은 코딩 할 필요가 꽤 toString 방법 객체입니다

True: {{toString booleanTestTrue}} 
False: {{toString booleanTestFalse}} 

그러나 v합니다.

관련 문제