J'utilise actuellement Jade sur un nouveau projet. Je veux rendre une page et vérifier si une certaine variable est disponible.
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!
J'ai toujours l'erreur suivante:
username is not defined
Des idées sur la façon dont je peux résoudre ce problème?
Cela devrait fonctionner:
- if (typeof(username) !== 'undefined'){
//-do something
-}
Plus simple que la méthode de @ Chetan si le fait de tester des valeurs faussement au lieu de valeurs non définies ne vous dérange pas:
if locals.username
p= username
else
p No Username!
Cela fonctionne parce que locals
, quelque peu ironiquement nommé, est l'objet racine du modèle.
if 'username' in this
p=username
Cela fonctionne parce que res.locals est l'objet racine du modèle.
Si vous savez à l'avance que vous souhaitez qu'une variable particulière soit disponible, mais pas toujours utilisée, j'ai commencé à ajouter une valeur "par défaut" à l'objet helpers.
app.helpers({ username: false });
De cette façon, vous pouvez toujours exécuter if (username) {
sans échec catastrophique. :)
Le 'nom d'utilisateur' ne devrait-il pas être inclus dans l'objet local?
Création d'un middleware pour que la méthode isDefined
soit disponible partout dans mes vues:
module.exports = (req, res, next) => {
res.locals.isDefined = (variable) => {
return typeof(variable) !== 'undefined'
};
next();
};