我希望有一个模板渲染一些数据,这些数据需要传回给render
. 例如,我正在使用一个模板来生成电子邮件,为此我需要一个主题和正文。我想做这样的事情:
app.render( 'email', function(err,html) {
subject = ?get from template somehow?
postEmail( subject, html, user_addr );
});
也就是说,我希望模板决定主题中应该出现的内容(最好不要仅为主题行创建另一个模板)。
不确定您是否已经弄清楚了,但是您可以通过更改参数的值从 Jade 发回信息。
电子邮件.jade:
- subject.text = "Hi " + user + ", welcome to the site.";
| Subject: #{subject.text}
应用程序.js:
args = { user: 'Test User', subject: { text: '' } };
app.render( 'email', args, function(err,html) {
subject = args.subject.text;
postEmail( subject, html, user_addr );
});
它必须是一个嵌套对象(即subject.text
,而不是简单的subject
),否则您将无法获得修改后的数据。虽然,如果您jade.compile()
直接调用创建的模板,那么嵌套似乎是不必要的。我认为 express 必须在将参数发送到视图引擎之前对其进行浅表复制。