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

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

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

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

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

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



답변

내 잘못이야….

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


답변

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

{{#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>


답변

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

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

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

{{get_length some_object}}


답변

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

{{#each blah as |blah|}}

{{else}}
 //   If array is empty
{{/each}}


답변