2011-10-02 6 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)に置くと、2番目の引数としてコールバックを受け付けていることがわかります。その場合、レンダリングされた文字列にアクセスすることができます。

それ以外の場合、レンダリングされた文字列を返さずに返すメソッドをコードに追加することは非常に簡単だと思います。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コードから呼び出すことができます。

関連する問題