将数据从模板传递回调用方

时间:2013-06-06 11:13:17

标签: node.js express pug

我希望有一个模板渲染一些需要传递给render调用者的数据。例如,我正在使用模板生成电子邮件,我需要一个主题和正文。我想做这样的事情:

app.render( 'email', function(err,html) {
  subject = ?get from template somehow?
  postEmail( subject, html, user_addr );
});

也就是说,我希望模板能够决定主题中应该出现什么(最好不要为主题行创建另一个模板)。

1 个答案:

答案 0 :(得分:3)

不确定你是否认识到这一点,但你可以通过改变参数的值来发回Jade的信息。

email.jade:

- subject.text = "Hi " + user + ", welcome to the site.";
| Subject: #{subject.text}

app.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必须先将参数的浅表副本发送到视图引擎。