2015-10-13 73 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{ 
    //....... 
    } 
} 
你知道它

,我討厭這樣