8

私は3つのファイルを持っています:layoutA.jade、layoutB.jade、index.jade。そのindex.jadeが拡張するレイアウトをプログラムで設定するにはどうすればよいですか?

私は使用してみました:

app.set('view options', { layout: false });

と:

res.render('index', { title: 'Express', layout: 'layoutB' });  // older 2.x way?

index.jadeファイルに明示的に設定されているものを上書きできないようです。index.jadeファイル内のextends行を省略しても機能しませんでした。

4

1 に答える 1

6

翡翠ファイルが次のディレクトリにあるとしましょう。

+ views
  + shared
    - layoutA.jade
    - layoutB.jade
  + home
    - index.jade

レイアウト設定を正しい順序で追加し、ルートビューフォルダーを指定します。

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view options', { layout: 'shared/layoutA' });

正しいフォルダ(この場合は「ビュー」)を指定してください。また、有効なデフォルトのレイアウトを指定してください。深く掘り下げる前に、これがテストページで機能することを確認してください。

それが機能すると、次のようなデフォルトのレイアウトが可能になります。

if(someImportantVar) {
  res.render('home/index', { title: 'Different layout!', layout: 'shared/layoutB' });
} else {
  res.render('home/index', { title: 'Default layout!'});
}
于 2012-11-27T00:08:20.217 に答える