Express+jade:局部变量在视图中不可用

Posted

技术标签:

【中文标题】Express+jade:局部变量在视图中不可用【英文标题】:Express+jade: local variable not available in view 【发布时间】:2012-04-29 06:35:48 【问题描述】:

我遇到了一个非常基本的问题,但我似乎找不到答案。我正在使用node.jsexpress,我只是想将一个局部变量传递到这样的视图中:

 app.get('/', function(req, res)
  res.render("index", locals: 
    title: "Blog",
    
  );
);

我的索引视图同样简单:

h1= title

但由于某种原因,我不断收到此错误,就好像从未传递局部变量一样:

 500 ReferenceError: /home/spartan/Node_Projects/test/views/index.jade:1 > 1| h1= title 2| title is not defined
> 1| h1= title
  2| title is not defined

我不知道我做错了什么!以下是我正在使用的版本:

快递:3.0.0alpha1 node.JS: 0.6.14 翡翠:0.24.0

请有人帮忙,这样我就可以继续学习 node + express!

【问题讨论】:

【参考方案1】:

您应该传递不带locals 的变量。这可能是 express 3.0.0 中的新功能

res.render("index", title: "Blog");

【讨论】:

非常感谢,就是这样!我只是在学习一个旧教程,不知道出了什么问题..【参考方案2】:

h1 = title 尝试在本地评估它,您发送的标题和那个不同。要了解差异,请参阅:

- var title = 'my title' // - allows writing code
h1 = title

你应该使用的是:

h1 #title

【讨论】:

谢谢你告诉我,我现在明白这个区别了。我很确定就是这样,但不幸的是,当我将视图更改为 h1 #title 时,它给了我完全相同的错误消息......有什么想法吗?【参考方案3】:

Here is a response 几个小时前我提出了一个类似的问题(+ 处理布局)。它显示了如何在渲染时传递数据。 (Express 3.0.0 兼容)

【讨论】:

谢谢,您的回复也有我想要的答案。

以上是关于Express+jade:局部变量在视图中不可用的主要内容,如果未能解决你的问题,请参考以下文章

如何正确渲染部分视图,并使用 Express/Jade 在 AJAX 中加载 JavaScript 文件?

nodejs+express+jade配置

Jade(Pug) 模板引擎使用文档

使用 mongoldb、mongoose、jade 和 express 通过按钮单击删除条目

从 Jade 模板访问 Express.js 请求或会话

如何在列表视图之上设置选项卡布局但在 Android 中不覆盖?