nodejs玉条件扩展
我想让我的Jade页面根据条件扩展不同的布局。 所以我的代码如下所示:
if myConditionVariable extends layout1 else extends layout2 block content p here goes my content!
现在这不起作用。 看起来好像只有最后定义的扩展将受到尊重,无论条件如何。 我也试着dynamic地定义templatename,比如
extends myLayoutNameVariable
并以不同的方式设置myLayoutNameVariable(表示dynamic帮助函数,将其设置为var,local var等)
有没有其他解决scheme的条件布局,或者有人可以告诉我我做错了什么?
欢呼声,西蒙
这似乎是一个仍然在github上打开的问题。
所以,处理这个问题的方法稍微less一点就是改变布局本身。
我添加了一些中间件,其余的stream程..
app.use(function(req, res, next){ res.locals.isAjax = req.headers['x-requested-with'] && req.headers['x-requested-with'] === 'XMLHttpRequest'; next(); });
现在,这个设置,“isjax”可用于玉。
在我的“layout.jade”(你将扩展的模板)中,我这样做:
- 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.
我希望这不是太晚,但我遇到了这个问题,我想我找出了一个解决方法:
-
做一个layout.jade,conditionally包括两个布局:
layout.jade: if conditionalVariable include firstLayout.jade else include otherLayout
-
在你看来,扩展
layout.jade
,并在控制器中定义conditionalVariable
(true
/false
):view.jade: extends layout block content p here goes my content!
-
迪斯科 !
你可以做些什么:
if myConditionVariable p test
?
如果不是,当你告诉渲染该视图时,你是否正确地传递了myConditionVariable
? 这是一个简短的例子:
app.get "/", (req, res) -> res.render "index", myConditionVariable: true