我正在使用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
网络上没有任何内容显示,但是控制台中的获胜者表示“否”。我真的不知道现在出了什么问题。
请帮助。 谢谢。
答案 0 :(得分:2)
您混淆了帕格服务器端执行和客户端执行。
当哈巴狗模板中有一个tmp
标签时,其中的所有内容都将被发送到浏览器,并且如果格式正确,将在此处执行。
在标记中使用等号时,例如script.
,服务器上的pug将对其进行评估。
因此,您尝试在服务器端上下文中访问客户端变量(h1= grid1
)。该变量在pug中不存在,它将呈现grid1
,这就是为什么浏览器窗口中没有任何内容的原因。
您需要将实际对象而不是字符串化形式传递给模板,以便根据需要呈现它:
undefined
然后您可以在pug模板中执行此操作,因为该变量可用于模板的执行上下文:
res.render('index2', { title: 'Tic Tac Toe', date: today, player: name, gb:boardgame});