【问题标题】:EJS variable in JS file in nodejs app using express使用express的nodejs应用程序中的JS文件中的EJS变量
【发布时间】:2020-05-08 10:21:26
【问题描述】:

我有一个具有last_level 属性的user 对象 我在我的特快路线中通过它如下:

app.get('/game', (req, res) => {
    res.render('main.ejs', { user: req.user })
})

我想在我的 JS 脚本文件中访问它。

经过一番研究,我尝试了这个......

var x = <%- user.last_level %>  

但它不起作用(没有给我 last_level 的值以将其分配给变量 x)。请帮我解决这个问题。

这是我的全部功能 -

window.onload = function () {
    var x = <%- user.last_level %> 
    if (x === "Easy") {
        console.log("easy")
    } else if (x === "Hard") {
        console.log("hard")
    } else if (x === "Pro") {
        console.log("pro")
    }
    console.log(x)
};

【问题讨论】:

  • 你应该试试不带标签的var x = user.last_level
  • 你的用户对象是在你的脚本文件之前加载的吗? var x = user.last_level 虽然如果它已经存在,你为什么需要将它设置为一个变量?
  • 只是对未来的提醒,但它不起作用是“描述”问题的最糟糕的方式。
  • 它给user is not defined at window.onload错误@federico-moretti
  • 我正在页面底部加载脚本文件。用户对象通过 express 传递。 @cracierjack

标签: javascript node.js mongodb ejs


【解决方案1】:

字符串化你的变量并查看结果。在您的 ejs 模板中使用以下代码

 <script>
    window.onload = function () {
            var x =  <%- JSON.stringify(user.last_level) %>
            if (x === "Easy") {
                console.log("easy")
            } else if (x === "Hard") {
                console.log("hard")
            } else if (x === "Pro") {
                console.log("pro")
            }
            console.log(x)
        };
    </script>

替代解决方案是

 <script>
    window.onload = function () {
      <% if (user.last_level == 'Easy') { %>
        console.log("easy")
      <% } else if((user.last_level == 'Hard')  { %>
        console.log("hard")
      <% } else if(user.last_level == 'Pro')  { %>
        console.log("pro")
      <% } %>
    };
  </script>

【讨论】:

  • 您能否指定错误,因为我已经尝试并测试过了。这是工作。您尝试过哪种解决方案。@IROC
  • 第一个Uncaught SyntaxError: Unexpected token '&lt;' & 第二个,我把它放在网页本身的底部,它显示所有红色代码并且不匹配任何正确的语法格式。
  • 这是我的路线调用代码app.get('/game', (req, res) =&gt; { res.render('main.ejs', { user: req.user }) })
  • 你应该使用script 标签中的第一个解决方案。就像我在上面编辑过的一样。因为我们使用的是JSON.stringify 函数。而且您可能会看到红色代码,因为您的编辑器中没有 ejs 支持。
猜你喜欢
  • 2018-06-11
  • 2020-10-13
  • 1970-01-01
  • 2016-02-23
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
相关资源
最近更新 更多