Jade无法读取Jade文件上的变量

时间:2019-02-22 06:22:42

标签: express pug

我正在使用express.js + jade,并且在读取变量时遇到问题。

/index.js

var boardgame={
grids:['a','b','c'],
winer: 'No'
}
var jfile=JSON.stringify(boardgame);
res.render('index2', { title: 'Tic Tac Toe', date: today, player: name, gb:jfile});

/index.jade

script(type='text/javascript').
        // Pass as regular array here
        var inews = JSON.parse('!{gb}')
        var grids = inews.grids
        var grid1 = grids[0]
        var winner = inews.winer
        var ha ="a"
        console.log(winner);
h1= grid1
h1= ha

网络上没有任何内容显示,但是控制台中的获胜者表示“否”。我真的不知道现在出了什么问题。

请帮助。 谢谢。

1 个答案:

答案 0 :(得分:2)

您混淆了帕格服务器端执行和客户端执行。

当哈巴狗模板中有一个tmp标签时,其中的所有内容都将被发送到浏览器,并且如果格式正确,将在此处执行。

在标记中使用等号时,例如script.,服务器上的pug将对其进行评估。

因此,您尝试在服务器端上下文中访问客户端变量(h1= grid1)。该变量在pug中不存在,它将呈现grid1,这就是为什么浏览器窗口中没有任何内容的原因。

您需要将实际对象而不是字符串化形式传递给模板,以便根据需要呈现它:

undefined

然后您可以在pug模板中执行此操作,因为该变量可用于模板的执行上下文:

res.render('index2', { title: 'Tic Tac Toe', date: today, player: name, gb:boardgame});