私は現在、新しいプロジェクトで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
これを修正する方法についてのアイデアはありますか?
これは動作するはずです:
- if (typeof(username) !== 'undefined'){
//-do something
-}
未定義の値の代わりに偽の値をテストしても構わない場合は、@ Chetanのメソッドよりも簡単です。
if locals.username
p= username
else
p No Username!
これは、多少皮肉な名前の locals
がテンプレートのルートオブジェクトであるため機能します。
if 'username' in this
p=username
これは、res.localsがテンプレートのルートオブジェクトであるため機能します。
事前に特定の変数を使用したいが、常に使用するわけではないことがわかっている場合は、ヘルパーオブジェクトに「デフォルト」値を追加し始めました。
_app.helpers({ username: false });
_
このようにして、壊滅的な障害なしにif (username) {
を実行できます。 :)
「ユーザー名」をローカルオブジェクトに含めるべきではありませんか?
私のビューのどこでもisDefined
メソッドを使用できるようにするミドルウェアを作成しました。
module.exports = (req, res, next) => {
res.locals.isDefined = (variable) => {
return typeof(variable) !== 'undefined'
};
next();
};