如何在jade中通过res.render传递变量

时间:2014-03-11 00:25:38

标签: javascript node.js pug

首先,我想为我的英语道歉。

我在路由器文件上有这个代码:

exports.index = function (req, res) {
  res.render('./game/main', {name:req.session.name, menuOp:'Home'});
}

然后我从另一个文件扩展了.jade。

[main.jade]

extends mainLayout

block topMenu
    -var selected = '#{menuOp}'

但这会引发错误。 我的问题是......为什么我可以打印变量而不能分配给另一个?我的意思是,以下代码工作正常:

block topMenu
    h1 #{menuOp}

但是当我尝试分配时,不起作用。

顺便说一下,我试过这个并且也工作了:

block topMenu
    -var selected = 'Home'

所以我认为问题是#{variable}只适用于打印或其他东西。

1 个答案:

答案 0 :(得分:0)

这并不是100%清楚你想要做什么,但我认为你想要的是:

block topMenu
    -var selected = '#' + menuOp

当您使用短划线时,Jade将后面的内容解释为JavaScript,因此将变量放在字符串中不会扩展变量。如果你真的想要一个将哈希放在字符串前面的新变量,你可以使用上面的语法。