出力する代わりにテンプレートを変数にレンダリングする方法はありますか?テンプレートをexpressjsの変数にレンダリングする
res.render('list.ejs', {
posts: posts
});
この
var list = render('list.ejs', {
posts: posts
});
出力する代わりにテンプレートを変数にレンダリングする方法はありますか?テンプレートをexpressjsの変数にレンダリングする
res.render('list.ejs', {
posts: posts
});
この
var list = render('list.ejs', {
posts: posts
});
それを行う最も簡単な方法は、あなたの例では、res.render
にコールバックを渡すことです:
res.render('list.ejs', {posts: posts}, function(err, list){
//
});
しかし、あなたは別のテンプレートに含めるために、部分的なテンプレートをレンダリングしたい場合は間違いなく持っている必要がありますview partialsをご覧ください。
のようなもの、私はあなたが明示を見ればが、私は、あなたがレンダリングされた文字列をそのようにアクセスできるかわからない、とにかく、express.jsにかなり初心者です「ビュー.js "ソースをgithub(here)に置くと、2番目の引数としてコールバックを受け付けていることがわかります。その場合、レンダリングされた文字列にアクセスすることができます。
それ以外の場合、レンダリングされた文字列を返さずに返すメソッドをコードに追加することは非常に簡単だと思います。on line #399あなたが探している文字列を与える呼び出しがあります。
これは当初質問された問題ではありませんでしたが、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コードから呼び出すことができます。
jsonレスポンスでajaxによって部分的にロードする必要があります。 – xrado
このように動作しますか?私は実際にページをユーザーに戻したくないので、レンダリングされた文字列をres.json()レスポンスに含めたいと思います。 – chovy
はい、これは動作します。自分自身で渡したときに、ページをユーザーに戻したデフォルトのコールバックは呼び出されません。 –