핸들 바 템플릿 내에서 배열 길이를 찾는 방법은 무엇입니까?


86

json 객체를 사용하여 렌더링되는 Handlebars 템플릿이 있습니다. 이 json에서 나는 배열을 보내고 있습니다. 이렇게 :

var json = {
               "array":["abc","def","ghi","jkl"] 
}

이제 내 템플릿에서이 배열의 길이를 찾고 싶습니다. 다음과 같은 것 :

{{#each item}}
   {{ array.length }}
{{/each}}

Handlebars 문서에서 찾을 수 없습니다.

답변:


189

내 잘못이야....

{{array.length}}실제로 템플릿 내부에서 작동했습니다. 여기에 게시하기 전에 확인 / 테스트해야합니다.


36
글쎄요, 당신이 그것을 테스트하지 않아도 되었으니 감사합니다. :)
Perry Tew

8
이것은 궁금해하는 사람을 위해 핸들 바의 Mandrills 풍미에는 적어도 작동하지 않습니다. 적절한 대체품을 아직 찾지 못했습니다.
oneirois

43

이 경우 각 블록 내에서 각각의 부모 변수를 참조해야합니다.

{{#each array}}
    {{../array.length}}
{{/each}}

나는 당신의 변수가 "배열"이라는 이름이 아마 문제를 합친다고 생각합니다. 명확히하기 위해 몇 가지 다른 JSON을 가정 해 보겠습니다.

var json = {
    "fruit":["apple","orange","banana"]
};

그래서 이렇게 :

<ul>
    {{#each fruit}}
        <li>{{this}} {{@index}} {{../fruit.length}}</li>
    {{/each}}
</ul>

산출 할 것 :

<ul>
    <li>apple 0 3</li>
    <li>orange 1 3</li>
    <li>banana 2 3</li>
</ul>

1
목록 항목은apple 0 3 orange 1 3 banana 2 3
Paul

@Paul, 맞습니다. 올바른 출력을 반영하도록 예제가 업데이트되었습니다.
Kevin Powell

관련 질문 : 현재 파이프 라인 값일 때 배열의 길이를 어떻게 얻습니까?
Gyscos 2015 년

구문 적으로이 답변은 허용되는 답변보다 더 의미가 있습니다.
Neil Monroe

2

이를 처리하기 위해 간단한 도우미를 정의 할 수 있습니다.

Handlebars.registerHelper('get_length', function (obj) {
 return obj.length;
});   

그런 다음 템플릿에서 사용하십시오.

{{get_length some_object}}

1

콘텐츠를 표시하기 위해 빈 목록을 테스트하는 경우 ... 핸들 바를 사용하는 Ember.js에서 #each에 대해 else를 가질 수 있습니다.

{{#each blah as |blah|}}

{{else}}
 //   If array is empty
{{/each}}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.