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. 

我希望这不是太晚,但我遇到了这个问题,我想我找出了一个解决方法:

  1. 做一个layout.jade,conditionally包括两个布局:

     layout.jade: if conditionalVariable include firstLayout.jade else include otherLayout 
  2. 在你看来,扩展layout.jade ,并在控制器中定义conditionalVariabletrue / false ):

     view.jade: extends layout block content p here goes my content! 
  3. 迪斯科 !

你可以做些什么:

 if myConditionVariable p test 

如果不是,当你告诉渲染该视图时,你是否正确地传递了myConditionVariable ? 这是一个简短的例子:

 app.get "/", (req, res) -> res.render "index", myConditionVariable: true