Ответ 1
Это должно работать:
- if (typeof(username) !== 'undefined'){
//-do something
-}
В настоящее время я использую нефрит в новом проекте. Я хочу отобразить страницу и проверить, доступна ли переменная.
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
Любые решения?
Это должно работать:
- if (typeof(username) !== 'undefined'){
//-do something
-}
Проще чем метод @Chetan, если вы не возражаете против проверки значений фальшивки вместо значений undefined:
if locals.username
p= username
else
p No Username!
Это работает, потому что несколько иронически названный locals
является корневым объектом для шаблона.
if 'username' in this
p=username
Это работает, потому что res.locals является корневым объектом в шаблоне.
Если вы заранее знаете, что хотите иметь доступную переменную, но не всегда ее использовать, я начал добавлять значение "по умолчанию" к объекту хелперов.
app.helpers({ username: false });
Таким образом, вы можете сделать if (username) {
без катастрофического сбоя.:)
Не следует ли "имя пользователя" быть включенным в объект locals?
Создал промежуточное программное обеспечение, чтобы метод isDefined
доступен везде в моих представлениях:
module.exports = (req, res, next) => {
res.locals.isDefined = (variable) => {
return typeof(variable) !== 'undefined'
};
next();
};