Jade - Modèle de Moteur: Comment faire pour vérifier si une variable existe
Je suis actuellement à l'aide de Jade sur un nouveau projet. Je veux afficher une page et de vérifier si une 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!
Je reçois toujours le message d'erreur suivant:
username is not defined
Des idées sur comment je peux résoudre ce problème?
- semble maintenant (2014), nous n'avons plus cette erreur. Beaucoup plus facile à utiliser.
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner:
Plus simple que @Chetan de la méthode si vous n'avez pas l'esprit de tests pour falsy valeurs à la place des valeurs indéfinies:
Cela fonctionne parce que l'ironiquement nommé
habitants
est la racine de l'objet pour le modèle.render
étape:res.render('view', {username: user.name});
Cela fonctionne car res.les habitants, c'est la racine de l'objet dans le modèle.
Si vous savez à l'avance que vous voulez une variable particulière disponible, mais pas toujours, j'ai commencé à ajouter une valeur "par défaut" pour les aides de l'objet.
De cette façon, vous pouvez toujours faire
if (username) {
sans une défaillance catastrophique. 🙂app.locals({ username: false });
app.locals
n'est pas une fonction plus il devrait donc êtreapp.locals.username = false;
Ne devrait pas 'username' être inclus dans les locaux de l'objet?
https://github.com/visionmedia/jade/tree/master/examples
undefined
si elle est cochée, avecif
à l'avance.Créé un middleware pour avoir la méthode
isDefined
disponible partout dans mon point de vue: