【问题标题】:Variable not available in script tag变量在脚本标签中不可用
【发布时间】:2016-11-21 17:32:30
【问题描述】:

我正在使用 passportjs 在我的快速应用程序上进行用户身份验证。但是我遇到了一个奇怪的问题:

在我的索引路由上,我使用用户参数渲染 index.jade 模板

router.get('/', function(req, res, next) {
  res.render('index', { user: req.user });
});

现在在我的翡翠模板中,我有以下内容

block content
  if user
    h1 logged in #{user}
    script var shared_resources.user = user
  if !user
    h1 Not logged in

由于某种原因,该用户的条件通过正常。而且,当我打印出登录 #{user} 的用户对象时,它会很好地打印出详细信息。但是在脚本标签中,我得到了一个未捕获的引用,用户未定义。有谁知道为什么会这样?

【问题讨论】:

    标签: javascript node.js express pug


    【解决方案1】:

    您还需要在脚本标签中使用模板字符串。

    script var shared_resources.user = "#{user}"
    

    如果你想嵌入对象,你可以尝试关注。

    script var shared_resources.user = !{JSON.stringify(user).replace(/<\//g, '<\\/')}
    

    【讨论】:

    • 好的,但是当用户是一个对象时我遇到了其他问题。看起来玉没有正确解析 json,因此对象出现语法错误。我决定只传入用户名字符串,一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    相关资源
    最近更新 更多