2011-10-02 62 views

回答

22

做到這一點的最簡單的方法是將回調傳遞給res.render,在你的榜樣:

res.render('list.ejs', {posts: posts}, function(err, list){ 
    // 
}); 

但是,如果你想呈現部分模板,以便它們包含在另一個模板,你絕對應該有一個看看view partials

+1

我需要在json響應中加載ajax部分 – xrado

+1

這樣工作嗎?我不想實際將頁面呈現給用戶,我想要將呈現的字符串包含在res.json()響應中。 – chovy

+0

是的,這有效。默認回調是將頁面呈現給用戶的內容,當您傳入自己的頁面時不會調用它。 –

2

我在express.js相當新手,反正我不知道,你可以訪問渲染字符串的方式,但如果你看看快車「的觀點.js「在github上的源碼(here),你會發現它接受一個回調作爲第二個參數,如果這可能有幫助:你可以在那裏訪問渲染的字符串。

否則,我認爲很容易修補代碼來添加一個方法返回呈現的字符串而不發送它:on line #399你有一個非常的電話,給你正在尋找的字符串。

1

這不是最初提出的問題,而是基於來自OP和其他人的評論,它的目標似乎是通過json(jsonp)呈現部分內容,這是我不得不做的。

這是很容易:

app.get('/header', function (req, res) 
{ 
    res.render('partials/header', { session: req.session, layout: null }, function (err, output) 
    { 
     res.jsonp({ html: output }); 
    });  
}); 

注:在我的情況下,標題部分所需的會議,我的模板庫(表達-HBS)需要layout: null呈現部分不使用默認的佈局。

然後,您可以像使用其他任何JSONP端點一樣,從客戶端的Javascript代碼中調用此代碼。