Frage Jade - Template Engine: Wie überprüft man, ob eine Variable existiert?


Ich benutze Jade gerade 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 bekomme immer den folgenden Fehler:

username is not defined

Irgendwelche Ideen, wie ich das beheben kann?


75
2018-02-21 20:20


Ursprung


Antworten:


Das sollte funktionieren:

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

99
2018-02-21 20:52



Einfacher als @ Chetans Methode, wenn es Ihnen nichts ausmacht, auf falsche Werte anstelle von undefinierten Werten zu prüfen:

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

Das funktioniert weil das etwas ironisch benannt ist locals ist das Wurzelobjekt für die Vorlage.


86
2018-06-13 12:54



if 'username' in this
    p=username

Dies funktioniert, weil res.locals das Stammobjekt in der Vorlage ist.


10
2018-05-23 14:30



Wenn Sie im Voraus wissen, dass eine bestimmte Variable verfügbar, aber nicht immer verwendet werden soll, habe ich damit begonnen, dem Helferobjekt einen "Standard" -Wert hinzuzufügen.

app.helpers({ username: false });

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


6
2018-06-13 13:45



Sollte der 'Benutzername' nicht in das Locals-Objekt aufgenommen werden?

https://github.com/visionmedia/jade/tree/master/examples


1
2018-02-21 20:45



Erstellt eine Middleware, um die Methode zu verwenden isDefined überall in meinen Ansichten verfügbar:

module.exports = (req, res, next) => {
  res.locals.isDefined = (variable) => {
    return typeof(variable) !== 'undefined'
  };  
  next();
};

0
2018-04-24 15:38