我想让我的 Jade 页面根据条件扩展不同的布局。所以我的代码如下所示:
if myConditionVariable
extends layout1
else
extends layout2
block content
p here goes my content!
现在这不起作用了。无论条件如何,似乎只有最后定义的扩展才会受到尊重。我还尝试动态定义模板名称,例如
extends myLayoutNameVariable
并以不同的方式设置 myLayoutNameVariable (表达动态辅助函数,将其设置为 var、本地 var 等...)
条件布局还有其他解决方案吗?或者有人可以告诉我我做错了什么吗?
干杯,西蒙
因此,处理此问题的一种侵入性较小的方法是更改布局本身。
我添加了一些中间件,其余的就完成了。
app.use(function(req, res, next){
res.locals.isAjax = req.headers['x-requested-with'] &&
req.headers['x-requested-with'] === 'XMLHttpRequest';
next();
});
既然已经设置好了,“isAjax”就可以用于 jade 了。
在我的“layout.jade”(您将扩展的模板from),我这样做:
- if(!isAjax)
doctype 5
html
head
body
block content
block scripts
- else
block content
block scripts
为了(希望)清晰起见,我已经删除了完整的layout.jade的其他元素。
最后,我扩展layout.jade的正常视图无需修改即可工作(此jade模板包括这两种情况)。
extends layout.jade
.container.
This is text will be wrapped for a non-ajax request,
but not for an ajax request.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)