我正在使用Node和Express,我正在使用Pug(以前的Jade)模板引擎来渲染我的html。在我开始尝试将变量注入我的锚链接的href
之前,一切都工作正常。奇怪的是,如果我将我的Express应用程序view engine
更改为jade
,那么事情就会按预期开始工作。
基于other articles我已经阅读过该问题似乎是一个插值问题,但我似乎无法找到显示如何正确解决此问题的资源或文档。
实施例
我从rooms
json数组中提取数据,然后使用for
循环遍历每个数组元素并输出每个房间的数据。使用jade
以下作品。
table.table.table-striped
thead
tr
th Name
th Id
tbody
each room in rooms
tr
td(style="width: 50px;")
a(href!="/admin/rooms/delete/#{room.id}") Delete
td #{allTitleCase(room.name)}
td #{room.id}
使用上述pug
无效。具体而言,a(href='/admin/rooms/delete/#{room.id}') Delete
链接无法正常运行。它不是将房间ID注入链接href,而是输出#{room.id} 作为href
链接的结尾部分。
如何在pug
中解决此问题?
请注意,我已使用pug
尝试了以下所有操作,但这些选项均无效。
a(href="/admin/rooms/delete/#{room.id}") Delete
a(href!="/admin/rooms/delete/#{room.id}") Delete
答案 0 :(得分:18)
更新:Pug 2.0引入了对插值处理方式的重大改变。
根据the changelog,以下任何应工作:
// to solve OP's problem, the following can be used:
a(href="/admin/rooms/delete/" + room.id) Delete
// Here are a few additional scenarios which use the new API
// for anyone stumbling across this answer in the future
- var href = "/admin/rooms/delete/" + room.id;
a(href=href)
a(href=`${href}`) // Node.js/io.js ≥ 1.0.0
a(href=href + '?foo=bar')