我目前正在一个新项目上使用Jade。我想渲染一个页面并检查某个变量是否可用。
app.js
:
app.get('/register', function(req, res){
res.render('register', {
locals: {
title: 'Register',
text: 'Register as a user.',
}
});
});
register.jade
:
- if (username)
p= username
- else
p No Username!
我总是收到以下错误:
username is not defined
关于如何解决此问题的任何想法?
答案 0 :(得分:102)
这应该有效:
- if (typeof(username) !== 'undefined'){
//-do something
-}
答案 1 :(得分:88)
比@ Chetan的方法简单,如果你不介意测试假值而不是未定义的值:
if locals.username
p= username
else
p No Username!
这是有效的,因为有些具有讽刺意味的locals
是模板的根对象。
答案 2 :(得分:10)
if 'username' in this
p=username
这是有效的,因为res.locals是模板中的根对象。
答案 3 :(得分:6)
如果你事先知道你想要一个特定的变量,但并不总是使用,我已经开始向helpers对象添加一个“默认”值。
app.helpers({ username: false });
这样,您仍可以if (username) {
进行灾难性故障。 :)
答案 4 :(得分:1)
本地对象中不应包含'用户名'吗?
答案 5 :(得分:0)
创建了一个中间件,让我的视图中的方法isDefined
可用:
module.exports = (req, res, next) => {
res.locals.isDefined = (variable) => {
return typeof(variable) !== 'undefined'
};
next();
};
答案 6 :(得分:0)
用哈巴狗更简单,玉的继承者
if msg
p= msg