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' });

确保您指定了正确的文件夹(在本例中为“views”)。还要确保指定有效的默认布局。在深入研究之前检查这是否适用于测试页面。

一旦它工作,你可以像这样的默认布局:

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 回答