Можно ли получить длину объекта json внутри шаблона ручек с помощью свойства .length.
{{json.length}}
Если нет, можно найти длину на основе списка ключей, а затем с помощью .length, например {{json.keys.length}}

Пример структуры JSON

{1232134235423:[Name,Destination,Desc],  
 2134213214321:[Name],  
 2342354356634:[Name,Desc]
}

Изменить 1: Я знаю, что этого можно достичь с помощью специального помощника, но эта длина должна использоваться внутри настраиваемого помощника. Было бы полезно что-то вроде array.length

1
vignesh 5 Мар 2015 в 12:36

2 ответа

Лучший ответ

Если я правильно понимаю ваше редактирование, проблема не в том, чтобы использовать другого помощника, а в том, чтобы вызвать его в вызове другого помощника. Таким образом, вы можете использовать второй помощник, вложенный в ваш пользовательский вызов if-helper:

{{#customIf (objectLength json)}}
    do some stuff...
{{/customIf}}

Согласно этому ответу «Получение списка ключей объектов JavaScript» вы можете использовать Object.keys(json) для получения всех ключей вашего объекта.

Новый помощник objectLength может выглядеть так:

Handlebars.registerHelper("len", function(json) {
    return Object.keys(json).length;
});
3
Community 23 Май 2017 в 12:33

Вы можете проверить длину объекта в шаблоне руля, как это в вашем шаблоне. Таким образом, HTML будет отображаться только тогда, когда у объекта есть один или несколько дочерних элементов.

{
  people: [
    "abc",
    "Alan Johnson",
    "Charles Jolley",
  ],
}


{{#if people.length}}
  <p>{{ people}} </p>
  <ul class="people_list">
    {{#each people}}
      <li>{{this}}</li>
    {{/each}}
  </ul>
{{/if}}
0
Vijay Dhanvai 23 Сен 2020 в 12:34