【问题标题】:How to pass variables from Jade to Node.js endpoint function如何将变量从 Jade 传递到 Node.js 端点函数
【发布时间】:2016-04-11 20:00:38
【问题描述】:

我是新来表达的,我想将玉文件中的 user.username 传递给我的 javascript 文件中的端点函数。 这是 index.js 中的端点函数:

router.get('/userdetail', function(req, res) {

   console.log(req.params)
   console.log(req.body)

   res.render('userdetail', { title: 'User Detail' });
});

这是我的玉文件:

extends layout
block content
    h1.
        User List
    ul
        each user, i in userlist
        li
            a(href="/userdetail/#{user.username}")= user.username

基本上,我希望链接指向用户的页面,而无需手动对每个用户进行硬编码。如果在 angularjs 中有某种方法可以做到这一点,那也很好。

编辑: 我编辑了我的代码如下,但是 console.log() 给了我未定义的。

index.js:

router.get('/userdetail', function(req, res) {

   console.log(req.query.username);

   res.render('userdetail', { title: 'User Detail' });
});

userdetail.jade:

extends layout
block content
    h1.
        User List
    ul
        each user, i in userlist
            li
                a(href="mailto:#{user.email}")= user.username    
                a(href="/userdetail/?username = {user.username}")= user.username

【问题讨论】:

  • 您将title 传递给您的视图(玉),但不是user...您也需要传递它。 req.query 应该包含 GET 参数,如果我没记错的话,如果 username=xxx 不在 URL 中,那么 req.query.username 将是未定义的。
  • 很遗憾,我在获取用户名时遇到了麻烦。 :(
  • 嗯...它存储在哪里?通常,您必须查询数据库,提取用户列表,然后将其传递给视图...

标签: javascript angularjs node.js express pug


【解决方案1】:

您可以将用户名设置为查询参数

a(href="/userdetail/?username={user.username}")= user.username

并在 request.query 即 request.query.username 中访问它

请注意我可能没有正确的玉语法

【讨论】:

  • console.log() 只是给我未定义。 :(
  • 发布您的链接 我认为我的回答略有错误。语法应该是 a(href="/userdetail?username={user.username}")= user.username 即删除最后一个 /
【解决方案2】:

您需要将用户对象作为选项参数传递给 res.render 命令。 也许是这样的:

router.get('/userdetail', function(req, res) {

  locals = req.body.userlist

  res.render('userdetail', locals);

});

您只需要弄清楚如何从请求对象中检索用户列表,然后将其传递给渲染选项。

【讨论】:

  • 我遇到的问题是“检索用户”部分。
  • 见上面@mpen 的评论
猜你喜欢
  • 2020-03-24
  • 1970-01-01
  • 2023-03-07
  • 2016-10-18
  • 2018-09-10
  • 1970-01-01
  • 2020-07-10
  • 2014-10-27
  • 2015-11-24
相关资源
最近更新 更多