83

現在、新しいプロジェクトで Jade を使用しています。ページをレンダリングして、特定の変数が使用可能かどうかを確認したいと考えています。

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!

私は常に次のエラーが発生します。

username is not defined

これを修正する方法についてのアイデアはありますか?

4

7 に答える 7

108

これはうまくいくはずです:

- if (typeof(username) !== 'undefined'){
  //-do something
-}
于 2011-02-21T20:52:56.820 に答える
94

未定義の値の代わりに偽の値のテストを気にしない場合は、@ Chetan の方法よりも簡単です。

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

これは、やや皮肉な名前localsの がテンプレートのルート オブジェクトであるため機能します。

于 2012-06-13T12:54:56.303 に答える
9
if 'username' in this
    p=username

res.locals がテンプレートのルート オブジェクトであるため、これが機能します。

于 2013-05-23T14:30:51.890 に答える
6

特定の変数を使用可能にしたいが、常に使用するわけではないことが事前にわかっている場合は、ヘルパー オブジェクトに「デフォルト」値を追加し始めました。

app.helpers({ username: false });

このようにしてif (username) {、壊滅的な障害を回避することができます。:)

于 2012-06-13T13:45:22.747 に答える
0

'username'をlocalsオブジェクトに含めるべきではありませんか?

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

于 2011-02-21T20:45:55.277 に答える