динамически перебирать переменные Pug - PullRequest
1 голос
/ 16 апреля 2019

Есть ли способ динамически перебирать переменные Pug с помощью JavaScript?

Я могу успешно статически перебирать переменные Pug с помощью функции each.. in, но может потребоваться перезапустить цикл в ожидании других действий

С помощью переменной groups я могу успешно получить первый объект и свойство в массиве, как этот

"#{groups[0].group_name}"

И успешно длина массива

"#{groups.length}"

Остальные эти коды не работают, этот просто регистрирует [объект объекта] по одной строке за раз.

script.
   for(k in "#{groups}"){
   console.log("#{groups}"[k]);
   }

Я получаю Uncaught SyntaxError: Неожиданный идентификатор

script.
    for(k in #{groups}){
        console.log(#{groups}[k]);  
    }

"Невозможно прочитать свойство 'имя_группы' из неопределенного"

script.
   for(i=0; i< "#{groups.length}"; i++){
      console.log("#{groups[i].group_name}");
    }

Также пробовал функции groups.forEach и groups.map, но безуспешно. Любая помощь приветствуется!!

1 Ответ

2 голосов
/ 16 апреля 2019

Stringify переменная Pug на сервере.Затем на стороне клиента проанализируйте строку обратно в объект.Помните, что pug vars недоступны на клиенте, поэтому это сделает их доступными для клиента.

Проверьте результат обработки кода

- var groups = [{"group_name":"One"},{"group_name":"Two"},{"group_name":"Three"}]

script.
   let groups = JSON.parse('!{JSON.stringify(groups)}')
   for(i=0; i< groups.length; i++){
      console.log(groups[i].group_name);
    }

После визуализацииэто будет выглядеть так:

<script>
   let groups = JSON.parse('[{"group_name":"One"},{"group_name":"Two"},{"group_name":"Three"}]')
   for(i=0; i< groups.length; i++){
      console.log(groups[i].group_name);
    }
</script>
...