2013-04-29 37 views
1

我有两个“主模板”叫ios.jadeandroid.jade加多个“子模板”应该延长要么ios.jadeandroid.jade基于变量的值。不幸的是,我找不到一种方法来做到这一点。玉:如何基于的价值扩展基础的模板变量

喜欢的东西下面就来我的脑海里,但它不工作:

if (locals.os === "android") 
    extends android 
else 
    extends ios 

有什么建议?

回答

0

我刚刚找到一种方法来动态决定在“主模板”中包含哪个“子模板”。让我们asume我的 “主模板” 看起来是这样的(保存为main.jade):

html 
    head 
    meta(charset='utf8') 
    base(href='/') 
    title My super cool website 
body 
    if(locals.os === "android") 
    include android 
    else 
    include ios 

我的其他文件是android.jade

p android 

...和ios.jade

p ios 

现在只需在你的Node.js-Express服务器上渲染“master-template”并看到奇迹的发生(请记住下面的代码不完整,你需要设置服务器的fir t):

app.get('/', function(req, res) { 
    res.render('main', {locals:{os: 'android'}}); 
}); 
+0

这允许给定的布局根据变量呈现不同的孩子。这已经可以与模板继承(并且更简单)。 – Darkhogg 2014-01-16 08:38:49