我在服务器上有一个Map要传递给pug,但是我无法迭代Map中的键值对来渲染Map中的数据,我尝试过简化Map,但是仍然无法使其工作。
router.get('url', middlware(),(req,res)=>{
let renderData = {};
renderData.test = new Map([["1","one"],["2","two"]]);
res.render('template', renderData);
})
模板:
block content
.container
.mt-3.whiteBG
each item in test
p here is some text
在简化版本中,我甚至不能得到要渲染的纯文本,更不用说访问迭代中的map值了,如果我做一些类似p #{test.get("1")}
的事情,我就可以访问这些值,map在Pug中是不可迭代的吗?如果不是,有没有办法把我的map转换成Pug可以迭代的数组/对象?
2条答案
按热度按时间scyqe7ek1#
在下一个版本中,Pug将支持ES6集合的迭代,在此之前,您可以使用
Object.fromEntries()
将Map转换为对象:rpppsulh2#
从Pug v2.1开始,您可以像这样迭代Map:
产出
Source
支持
each ... of ...
循环这需要一个在JS中支持for(const瓦尔of iterable)语法的环境。你可以迭代Map,Set等,也可以迭代数组。还有一些map键的重构: