javascript - 动态循环 Pug 变量

标签 javascript node.js pug

有没有办法用 javascript 动态循环遍历 Pug 变量?

我可以使用 each..in 函数成功地静态循环遍历 Pug 变量,但可能需要重新运行等待其他操作的循环

使用变量groups,我可以像这样成功获取数组中的第一个对象和属性

"#{groups[0].group_name}"

并成功得到数组的长度

"#{groups.length}"

这些代码的其余部分不起作用,这个代码一次只记录 [object Object] 一行。

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

我得到一个未捕获的语法错误:意外的标识符

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

“无法读取未定义的属性‘group_name’”

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

还尝试了 groups.forEachgroups.map 函数但没有成功。任何帮助将非常感激!!

最佳答案

将服务器上的 Pug 变量字符串化。然后在客户端将字符串解析回一个对象。请记住,客户端无法访问 pug 变量,因此这样做会将它们暴露给客户端。

Check out the codepen result

- 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>

关于javascript - 动态循环 Pug 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55716353/

相关文章:

java - Jade4J:没有这样的文件或目录

javascript - 期望函数在 Jest 中抛出异常

java - Docker Compose 链接的微服务不可发现

javascript - Jquery Mobile——如何覆盖选择框的高度和宽度。

javascript - Meteor.call 回调函数返回未定义

node.js - 检查数组中是否存在所有元素

javascript - AngularJS, ng-view + css3 keyframes with jade template - ng-cloak 不工作

javascript - 将对象从 jade 传递到 angularjs 模板

public_html 之外的 JavaScript?

javascript - 将两个 gulpif 合二为一