如何将变量从Jade模板文件传递到Javascript文件?

时间:2014-01-20 16:24:50

标签: node.js express pug

我是Node.js的新手并试图解决一些问题。如何将变量从Jade模板文件传递到JS文件?

我的server.js文件中有这行代码

res.render("aws.jade", {data : JSON.stringify({'val' : 'This is a Test'})});

基本上我只想尝试将数据中的值转换为aws.jade模板文件

这是aws.jade

html
    head
       script(type='text/javascript')
            var data = !{data}
        link(rel='stylesheet', href='/stylesheets/style.css')
    body
        title Title
        h1 Heading
        #div.test

我在Firebug控制台中不断收到此错误:

<var>data = {"val":"This is a Test"}</var>

有人可以解释一下为什么会发生这种情况,以及让我将变量从Jade模板文件传递到JS文件的方法吗?

谢谢

1 个答案:

答案 0 :(得分:5)

尝试在脚本后面添加一个.字符,这告诉Jade你想要一个标签内的文本块。

这是您的更新代码。

html
    head
        script(type='text/javascript').
            var data = !{data}
        link(rel='stylesheet', href='/stylesheets/style.css')
    body
        title Title
        h1 Heading
        #div.test

编辑 - 将标题设置为data.val

首先,您应该更改您的响应,删除JSON.stringify,这样您就可以返回一个不是字符串值的对象。

res.render("aws.jade", {data : {'val' : 'This is a Test'}});

然后您应该能够使用点表示法直接访问数据对象属性和结构,并将其直接分配给title元素...

title= data.val