2015-10-13 68 views
1

我使用express.js和表达句柄,并且我想呈现一个没有默认布局但带有一些上下文的.hbs文件。表达句柄,呈现一个没有布局和上下文的hbs文件

我可以通过一些背景:

router.get('/catalog', function (req, res) { 
    res.render('catalog/index.hbs', data); 
}); 

我可以停用默认布局:

router.get('/catalog', function (req, res) { 
    res.render('catalog/index.hbs', {layout: false}); 
}); 

但我不能同时做两种:

router.get('/catalog', function (req, res) { 
    res.render('catalog/index.hbs', data, {layout: false}); 
}); 

(尝试切换参数t)。

express-handlebars docs我不能找到一种方法,都做,我缺少什么?

谢谢。

编辑:嗯......看来,答案是没有的一大进步话题例子中的文档,我可以做到以下几点:

router.get('/catalog', function (req, res) { 
    res.render('catalog/index.hbs', {catalog: data, layout: false}); 
}); 

所以我可以混合使用数据和渲染选项同一个对象。

回答

-1

我遇到同样的问题,是你的,你的代码工作作为矿山:

router.get('/catalog', function (req, res) { 
    res.render('catalog/index.hbs',{catalog: data, layout:false}); 
}); 

,但我不认为这是解决这个问题的好办法,如果我通过一个数据: {布局:false,prop1:11,prop2:22}至 res.render('catalog/index.hbs',data); 它会打破我的页面目录/ index.hbs的布局,所以我必须传递这样的数据:{data:{layout:false,prop1:11,prop2:22}}渲染函数, 并且我的页面可能写入如下:

{{#with data}} 
<h1>{{layout}}</h1> 
<h1>{{prop1}}</h1> 
<h1>{{prop2}}</h1> 
{{/with}} 

,但我不喜欢这种风格,所以我必须包装渲染功能:

function doRender(res,renderData,options){ 
    if(renderData.layout||renderData.cache||endData.helpers){ 
    //....... 
    }else{ 
    //....... 
    } 
} 
你知道它

,我讨厌这样