Ich verwende Jade derzeit für ein neues Projekt. Ich möchte eine Seite rendern und prüfen, ob eine bestimmte Variable verfügbar ist.
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!
Ich erhalte immer den folgenden Fehler:
username is not defined
Irgendwelche Ideen, wie ich das beheben kann?
Antworten:
Das sollte funktionieren:
quelle
Einfacher als die Methode von @ Chetan, wenn es Ihnen nichts ausmacht, auf falsche Werte anstatt auf undefinierte Werte zu testen:
Dies funktioniert, weil der etwas ironisch benannte
locals
das Stammobjekt für die Vorlage ist.quelle
render
Phase definiert wurde:res.render('view', {username: user.name});
Dies funktioniert, da res.locals das Stammobjekt in der Vorlage ist.
quelle
Wenn Sie im Voraus wissen, dass eine bestimmte Variable verfügbar sein soll, aber nicht immer verwendet wird, habe ich begonnen, dem Helferobjekt einen "Standard" -Wert hinzuzufügen.
Auf diese Weise können Sie immer noch
if (username) {
auf einen katastrophalen Ausfall verzichten. :) :)quelle
app.locals({ username: false });
app.locals
keine Funktion mehr ist, also sollte es seinapp.locals.username = false;
Sollte "Benutzername" nicht im lokalen Objekt enthalten sein?
https://github.com/visionmedia/jade/tree/master/examples
quelle
undefined
wenn esif
vorher überprüft wurde.Erstellt eine Middleware, damit die Methode
isDefined
in meinen Ansichten überall verfügbar ist:quelle