#each helper в Handlebars не перебирает ключи в скобках - PullRequest
0 голосов
/ 24 мая 2018

Я использую Handlebars в своем приложении Node.js / Express.У меня есть JSON с несколькими ключами в квадратных скобках - tools[] и т. Д.

Я могу передать эти ключи обычным образом на руль, используя кавычки {{'tools[]'}}, и приложение возвращает действительные значения.

КогдаЯ пытаюсь перебрать значения, ключ которых заключен в кавычки - {{#each 'tools[]'}}Something here...{{/each}} Я не могу получить никакого результата.

Это ошибка?Я использую неправильный синтаксис?

Возможным решением может быть изменение ключей в JSON (не использовать квадратные скобки).Но эти скобки необходимы для получения нескольких значений из флажков в форме с enctype=multipart/form-data, и было бы очень болезненно менять все эти ключи.

Заранее спасибо за вашу помощь!

1 Ответ

0 голосов
/ 24 мая 2018

Из руля Документы :

Вы не можете включать закрывающий символ] в путь-литерал, но все остальные персонажи являются честной игрой.

Итак, ваш единственный способ - использовать подвыражение.Вы можете использовать встроенный lookup помощник внутри #each.

Handlebars предлагает поддержку подвыражений, которая позволяет вам вызывать несколько помощников в пределах одного усика и передавать результаты внутренних вызовов помощника.в качестве аргументов для внешних помощников.Субэкспрессии разделяются скобками.

{{#each (lookup this "tools[]")}}
    {{this}}
{{/each}}

const data = {
  "tools[]": [1,2,3,4]
};

const template = `
  {{#each (lookup this "tools[]")}}
    tools[{{@index}}]: {{this}}
  {{/each}}`;
  

console.log(Handlebars.compile(template)(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.min.js"></script>
...