代码之家  ›  专栏  ›  技术社区  ›  sigil

试图在pug中包含脚本并从脚本中调用函数,得到“意外令牌”错误[重复]

  •  0
  • sigil  · 技术社区  · 3 年前

    我在玩Node和Express,并使用Pug(以前的Jade)模板引擎来渲染我的html。一切都很顺利,直到我开始尝试将变量注入 href 的锚链接。奇怪的是,如果我更改我的Express应用程序 view engine jade 然后事情开始按预期进行。

    基于 other articles 我读到这个问题似乎是插值问题,但我似乎找不到显示如何正确解决这个问题的资源或文档。

    前-

    我正在从 rooms json数组,然后使用 for 循环遍历每个阵列元素并输出每个房间的数据。使用 以下工作。

    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 回复  |  直到 8 年前
        1
  •  26
  •   pdoherty926    8 年前

    更新: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')