14

我正在玩 Node 和 Express,我正在使用 Pug(以前的 Jade)模板引擎来呈现我的 html。在我开始尝试将变量注入href锚链接之前,一切都运行良好。奇怪的是,如果我将我的 Express 应用程序更改view engine为,jade那么事情就会开始按预期工作。

根据我读过的其他文章,该问题似乎是一个插值问题,但是我似乎找不到显示如何正确解决此问题的资源或文档。

前任。

我从roomsjson 数组中提取数据,然后使用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
4

1 回答 1

24

更新:Pug 2.0 对插值的处理方式进行了重大更改。

根据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')
于 2016-07-17T23:01:21.510 回答