4

非常に単純なエクスプレスアプリでかなりばかげたエラーが発生します。私はビューエンジンとして翡翠を使用しています。これは問題に関連している場合に備えて言っています。

何かをレンダリングするために変数が定義されているかどうかを確認しようとしていますが、その変数を確認するだけで「変数が定義されていません」というエラーが発生します。これは私が期待する動作ではないので、何か間違ったことをしているのではないかと思います。これは私が使用しているビューコードです:

h1= title
- if (user)
    p Welcome to #{title}, #{user.username}
- else 
    p Welcome to #{title}

これを行う正しい方法は何ですか?ビューの変数をチェックする方法が必要です。:-/

編集:エラーがトリガーされる行を言うのを忘れました。2行目の「-if(user)」でトリガーされます。

4

3 に答える 3

13

別の回答で言及されているように、JadeドキュメントのパブリックAPIセクションでは、locals変数はデータがJadeテンプレートに渡される方法であると述べています。ヒバリでは、jadeテンプレートの変数の前に。を付けlocalsました。これにより、エラーが正しく回避されました。

したがって、次のJadeテンプレートでエラーを解決できます。

h1= title
- if (locals.user)
    p Welcome to #{title}, #{user.username}
- else 
    p Welcome to #{title}
于 2012-09-03T19:57:24.387 に答える
3

p Welcome to #{title}; #{user.username}引用符で囲みませんでした

試す

if(typeof obj != 'undefined')
于 2012-05-22T20:19:01.260 に答える
1

layout.jade

# the following function is a safe getter/setter for locals
- function pagevar(key, value) { var undef; return (value===undef) ? locals[key] || null : locals[key] = value; }
block config
  #intended as a non-rendered block so that locals can be overridden.
  # put your defaults here... - use append in the child view
!!!
html
  head
    title=pagevar('title')
    meta(name='description',content=pagevar('description'))
...

page.jade

append config
  - locals.title = 'override';
  - locals.description = 'override 2';
  - pagevars('somekey', 'some value');
...

簡単ピージー。

于 2013-05-14T23:06:51.543 に答える