Подтвердить что ты не робот

Как найти длину массива внутри шаблонов Handlebar?

У меня есть шаблон Handlebars, который создается с помощью json-объекта. В этом json я посылаю массив. Вот так:

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

Теперь в моем шаблоне я хочу найти длину этого массива. Что-то вроде:

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

Не удалось найти его в документации Handlebars.

4b9b3361

Ответ 1

Мой плохой...

{{array.length}} действительно работал внутри шаблона. Должен был проверить/проверить его перед отправкой здесь.

Ответ 2

В этом случае вам нужно ссылаться на родительскую переменную из каждого из каждого блока:

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

Я думаю, что ваша переменная, называемая "array", вероятно, также ассоциирует проблему. Предположим, что некоторые 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>

Ответ 3

Вы можете определить простой помощник для его обработки:

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

И затем используйте его в своем шаблоне, например:

{{get_length some_object}}

Ответ 4

попробуйте следующее:

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

Ответ 5

Если вы тестируете пустой список для отображения содержимого... В Ember.js, который использует рули, у вас может быть другое для #each.

{{#each blah as |blah|}}

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