标签规范内的玉变量渲染

时间:2012-03-01 14:06:44

标签: node.js pug

我有一个像这样的Jade页面:

table
    th Site Name
    th Deadline
    th Delete Transaction

    - if (transactions != null)
        each item in transactions
            tr
                td= item.item_name
                td
                    span(id='countdown' + item.timeout + ')= item.timeout
                td
                    span(style='cursor: pointer;', onclick='deleteTransaction("=item.uniqueId")')= "X"

            button(id='confirmButton', onclick='confirm();')Confirm

正如您在span属性中看到的那样,我尝试以两种不同的方式放置局部变量,但它不起作用。关于第一种方式,我收到token ILLEGAL错误,而第二种方法只是在我的JavaScript中写入类似deleteTransaction("=item.uniqueId");的内容。我知道答案是非常愚蠢的,但是Jade doc(即使它有所改进)一次又一次没有帮助我。

由于

1 个答案:

答案 0 :(得分:6)

引用the docs

  

假设我们有用户本地{ id: 12, name: 'tobi' },我们希望创建一个锚点标记,href指向“/ user / 12”,我们可以使用常规的javascript连接:

a(href='/user/' + user.id)= user.name

埃尔戈:

span(id='countdown' + item.timeout)= item.timeout

// ...

span(style='cursor: pointer;', onclick='deleteTransaction("' + item.uniqueId + '")')= "X"

再次引用:

  

或者我们可以使用jade的插值,我添加了因为使用Ruby或CoffeeScript的每个人似乎认为这是合法的js ..:

a(href='/user/#{user.id}')= user.name

所以:

span(style='cursor: pointer;', onclick='deleteTransaction("#{item.uniqueId}")')= "X"

作为您将在编程生活中每天使用的一般提示:平衡您的报价。就像括号和括号一样,每个引号必须打开一个新的引号或关闭一个已经打开的引号(相同类型,即双引号关闭双引号,单引号关闭单引号)。借用你的代码:

span(id='countdown' + item.timeout + ')= item.timeout
  //                                 ^
  //                                 |
  // What's this guy doing? ---------+

尽管Jade是一种模板语言,也许不是一种“真正的”编程语言,但就像HTML(也不是编程语言)一样,这条规则对你很有帮助。