84 Stimmen

Jade - Template Engine: Wie prüfe ich, ob eine Variable existiert?

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

Haben Sie eine Idee, wie ich das Problem beheben kann?

109voto

Chetan Punkte 43934

Das sollte funktionieren:

- if (typeof(username) !== 'undefined'){
  //-do something
-}

94voto

BMiner Punkte 15638

Einfacher als die Methode von @Chetan, wenn es Ihnen nichts ausmacht, auf fälschliche Werte statt auf undefinierte Werte zu testen:

if locals.username
  p= username
else
  p No Username!

Dies funktioniert, weil die etwas ironisch benannte locals ist das Root-Objekt für die Vorlage.

9voto

avoid3d Punkte 620
if 'username' in this
    p=username

Dies funktioniert, weil res.locals das Root-Objekt in der Vorlage ist.

6voto

Dominic Barnes Punkte 27403

Wenn Sie im Voraus wissen, dass Sie eine bestimmte Variable zur Verfügung haben möchten, die aber nicht immer verwendet wird, habe ich begonnen, dem Hilfsobjekt einen "Standardwert" hinzuzufügen.

app.helpers({ username: false });

Auf diese Weise können Sie immer noch if (username) { ohne einen katastrophalen Ausfall :)

1voto

I Like Punkte 1542

Noch einfacher wird es mit pug, dem Nachfolger von jade

if msg
  p= msg

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X