【问题标题】:Why is Jade not using the correct local variable?为什么 Jade 没有使用正确的局部变量?
【发布时间】:2013-08-22 10:26:55
【问题描述】:

我正在尝试通过 Mongoose 从 MongoDB 获取用户并将他们发送到视图。出于某种原因,当我尝试遍历 Jade 模板中的 users 数组时,我从 app.js 中获取了 users 变量,而不是传递给视图的 users 数组。怎么可能在范围内?

另外,当我在视图中输出locals 变量时,我看到users 的正确值。奇怪。

// app.js

var users = new UsersController();

app.get('/', function(req, res) {
  User.find(function(err, users) {
    if (err) throw err;
    res.render('home', { users: users });
  });
});

// home.jade

div.users
  each user in users
    p!= user

【问题讨论】:

  • 使用最新的 express 和 jam 在我的机器上进行快速测试,它按预期工作。 users 是通过 render 第二个参数传递的用户列表。我刚刚做了:var users = [{name: "aaron"}, {name: "jane"}]; app.get('/', function(req, res) { res.render('home', { users : users}); });
  • 是的,这很奇怪。我刚刚尝试了完全相同的设置,这次使用 EJS,它按预期工作。由于某种原因,Jade 没有访问传递给视图的 users,而是从 app.js 访问 users
  • 还有其他区别吗?它对我来说和 Jade 一起工作。

标签: node.js express pug


【解决方案1】:

请试试这个:

var users = new UsersController();

app.get('/', function(req, res) {
  User.find(function(err, users) {
    if (err) throw err;
    res.locals.users = users;
    res.render('home');
  });
});

div.users
  each user in #{users]
    p!= user

【讨论】:

    猜你喜欢
    • 2013-09-27
    • 1970-01-01
    • 2016-12-07
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    相关资源
    最近更新 更多