我希望有一个模板渲染一些需要传递给render
调用者的数据。例如,我正在使用模板生成电子邮件,我需要一个主题和正文。我想做这样的事情:
app.render( 'email', function(err,html) {
subject = ?get from template somehow?
postEmail( subject, html, user_addr );
});
也就是说,我希望模板能够决定主题中应该出现什么(最好不要为主题行创建另一个模板)。
答案 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必须先将参数的浅表副本发送到视图引擎。