2013-08-05 94 views
9

我想將部分視圖(以Jade編寫)的內容加載到Bootstrap模式對話框中。爲此,我使用AJAX調用。我只能返回生成的HTML並將其加載到模式中,但還需要與呈現的視圖相處的其他數據。 我希望能夠回到這樣一個對象(解析,以JSON):將視圖渲染爲ExpressJS中的變量(用於AJAX響應)

response = { 
    some_data: 'blablabla', 
    some_more_data: [5, 8, 10, 67], 
    my_html: '<div>HTML rendered from the Jade template</div>' 
}; 

有沒有辦法做到這一點?現在我可以返回渲染HTML這樣的:

res.render('employees', {layout: false}); 

但我怎麼能存儲在一個變量與更多的數據一起返回,而無需做更多的AJAX調用?

回答

21

在表達,你可以使用app.render與回調渲染視圖,並獲得HTML:

app.render('employees', {layout: false}, function(err, html){ 
    var response = { 
    some_data: 'blablabla', 
    some_more_data: [5, 8, 10, 67], 
    my_html: html 
    }; 
    res.send(response); 
}); 
+1

似乎正是我一直在尋找!但有沒有辦法做到這一點,而不必傳遞整個'app'參數?上面的代碼是在routes.js文件中,我不知道如何在那裏使用/傳遞'app' ... –

+5

您可以通過res.app –

+0

獲得您的路由實例完美無瑕!非常感謝你! –