1

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

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

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

4

1 回答 1

3

不确定您是否已经弄清楚了,但是您可以通过更改参数的值从 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 必须在将参数发送到视图引擎之前对其进行浅表复制。

于 2013-06-10T12:31:48.067 回答