在ExpressJS中将视图渲染到变量中(用于AJAX响应)

10

我想将一个使用Jade编写的部分视图内容加载到Bootstrap模态对话框中。为此,我使用AJAX调用。我可以只返回生成的HTML并将其加载到模态对话框中,但还有其他数据需要获取以及呈现的视图。 我希望能够返回像这样的对象(解析为JSON):

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调用呢?

1个回答

24

在express中,您可以使用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... - Samuel Bolduc
5
您可以通过res.app在路由中获取一个实例。 - mr.freeze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接