Pertanyaan Jade - Template Engine: Cara memeriksa apakah ada variabel


Saya saat ini menggunakan Jade pada proyek baru. Saya ingin merender halaman dan memeriksa apakah ada variabel tertentu.

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!

Saya selalu mendapatkan kesalahan berikut:

username is not defined

Ada gagasan tentang bagaimana saya dapat memperbaiki ini?


75
2018-02-21 20:20


asal


Jawaban:


Ini seharusnya berfungsi:

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

99
2018-02-21 20:52



Lebih sederhana dari metode @ Chetan jika Anda tidak keberatan menguji nilai-nilai palsu daripada nilai-nilai tidak terdefinisi:

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

Ini berfungsi karena nama yang agak ironis locals adalah objek root untuk template.


86
2018-06-13 12:54



if 'username' in this
    p=username

Ini berfungsi karena res.locals adalah objek root dalam template.


10
2018-05-23 14:30



Jika Anda tahu sebelumnya Anda menginginkan variabel tertentu tersedia, tetapi tidak selalu digunakan, saya sudah mulai menambahkan nilai "default" ke objek pembantu.

app.helpers({ username: false });

Dengan cara ini, Anda masih bisa melakukannya if (username) { tanpa kegagalan katastropik. :)


6
2018-06-13 13:45



Bukankah seharusnya 'nama pengguna' dimasukkan dalam objek lokal?

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


1
2018-02-21 20:45



Menciptakan middleware untuk memiliki metode isDefined tersedia di mana-mana dalam pandangan saya:

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

0
2018-04-24 15:38