Как перебрать вложенный массив внутри объекта в массиве в Express-Handlebars? - PullRequest
0 голосов
/ 17 мая 2019

Я довольно новичок в Node.js, Express, Handlebars и т. Д., И я пытаюсь создать динамическое выпадающее меню, используя Node.JS и Express-Handlebars.

Вот так выглядят мои данные

var dropdownCategory = [
  {title:"Title", dropdownItem: [{title: "1"}, {title: "2"}]}, 
  {title: "Other title", dropdownItem: [{title: "3"}, {title: "4"}]}]

Вот как я сейчас перебираю это в экспресс-руле:

{{# each dropdownCategory}}
  <li class="nav-item dropdown">
    <a href="#" class="nav-link dropdown-toggle" data-toggle = "dropdown">
    {{title}}
     </a>
     {{# each dropdownItem}}
     <div class="dropdown-menu">
       <a href="/{{title}}" class="dropdown-item">{{title}}</a>
     </div>
     {{else}}
     {{/each}}
  </li>
{{else}}
(...)
{{/each}}

Я всегда получаю первый титул только от dropdownItem. Буду признателен за ваш вклад в этом. Я предполагаю, что это проблема вложения второго массива в объект, но я, честно говоря, понятия не имею, как это исправить. Спасибо!

1 Ответ

0 голосов
/ 21 мая 2019

Сначала давайте переберем dropdownCategory и зарегистрируем его, чтобы увидеть:

{{# each dropdownCategory}}
       {{log this}}
    {{/each}}

в консоли вы должны увидеть это:

{title:"Title", dropdownItem: [{title: "1"}, {title: "2"}]}, 
  {title: "Other title", dropdownItem: [{title: "3"}, {title: "4"}]}

теперь мы должны перебрать внутри "this" .

{{# each dropdownCategory}}
       {{#each this.title}} //instead of "this.title", "this" or "." also correct
            {{this}}
          {{/each}}
    {{/each}}

вы всегда можете войти в систему с помощью вспомогательного метода log. Я оставил часть HTML для вас :) Вы можете украсить, как вы хотите. Я надеюсь, что это поможет

...