0

의 반복자 배열 builtin helper '{{#each}}'과 함께 핸들 막대 템플릿의 문자열 배열을 반복하려고합니다. 하지만 작동하지 않습니다.(express-) 핸들 모음 템플릿의 헬퍼에서 {{#each}}

간단한 예 :

문자열 배열을 반환하는 사용자 정의 도우미 기능 :

helpers: { 
    arr: function() { 
    return ['foo', 'bar']; 
    } 
} 

도우미 액세스 할 수있는 틀 :

{{#each arr}} 
    {{@index}}: {{this}} 
{{else}} 
    default 
{{/each}} 

그러나이 항상을 else case를 출력합니다. 직접 (#each없이) 도우미를 액세스 할 때 은 예상대로 결과 :

{{arr}} // prints => foo,bar 

내가 어딘가 작업 할 오브젝트를 필요로 #each 것을 읽었다. 워드 프로세서에서 도우미의 컨텍스트에서 이것에 관해서는 아무것도 찾을 수 없었습니다 - 그럼에도 불구하고 나는 여러 가지 방법으로 객체에 반환하는 배열을 래핑하려고했습니다. 그러나 나는 그것을 작동하게 만들 수 없었다.

그래서 핸들바 템플릿 내에서 헬퍼의 문자열 배열에 올바르게 액세스하는 방법은 무엇입니까?

+0

테스트 목적으로 또는 놀이터로 이것을 수행하는 경우 도우미가 배열을 반환하지 않아도됩니다. 도우미는 값에 적용될 예정이며 반복하는 배열을 반환하지 않습니다. 테스트 목적을 제외하고 도우미가 배열을 반환하는 이유가 있습니까? 실제로 반복하는 배열을 제공하는 도우미를 사용하는 경우가 있습니까? – Mjh

+0

나는 핸들 바를 처음 사용합니다. 노드 응용 프로그램에서 [express-handlebars] (https://github.com/ericf/express-handlebars)를 사용하고 있습니다. 나의 이해는 헬퍼의 한 가지 유스 케이스는 서버에서 클라이언트로 정보 (예 : 배열)를 전달하는 것이다. – zwif

답변

1

다음 subexpressions 상태에서 핸들 문서 : 단일 콧수염 내에서 여러 도우미를 호출하고, 외부에 인수로 내부 도우미 호출의 결과에 전달할 수 있습니다 표현식에 대한

핸들 바가 제공 지원, 도우미. 서브 표현식은 괄호로 구분됩니다.. 이것이 의미하는 것은 우리가 arr 컨텍스트 객체에 있지만, 헬퍼 - 조회하는 호출 될 될 하지 속성입니다 핸들 바 말할 필요가, 우리가 그렇게 할 것입니다

[강조는 추가] 괄호 안의 내부 도우미 포장 기준 : 그렇게 말

{{#each (arr)}} 

을, 나는이 하지 도우미의 올바른 사용이라고 주장하는, MJH으로 comment에 동의합니다. 보간을 위해 템플릿 함수에 데이터를 직접 전달해야합니다. 도우미의 목적은 일부 데이터를 수정하거나 일부 논리를 수행하는 것입니다. 매개 변수가없는 도우미 함수는 꽤 매끄러운 코드 - 냄새입니다.