发送电子邮件后,会话变量未设置

时间:2015-01-22 08:29:19

标签: javascript node.js meteor session-variables

我想发送电子邮件并显示相关通知(下面是提交功能代​​码):

Session.set('alertMessage', ['Email has been sent', 'success']);
var a = Session.get('alertMessage');
console.log(a);
Meteor.call('sendEmail', dataText);

我的SendEmail方法:

Meteor.methods({
  sendEmail: function (text) {
  check([text], [String]);
  this.unblock();
  Email.send({
    to: 'myEmail@email.xyz',
    from: 'contactForm@email.xyz',
    subject: 'New message from contact form',
    text: text
  });
}

});

并呈现联系表单模板的回调:

Template.contactFormTemplate.rendered = function(){
  var b = Session.get('alertMessage');

  console.log(b);
}

问题:我在控制台中看到a变量正确获取会话值:

数组['电子邮件已发送','成功']

但页面重新加载后(提交表单时)b变量无法获取会话变量:

undefined

即使我尝试从控制台获取此会话变量:

var c = Session.get('alertMessage')
console.log(c)

返回undefined - 任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

最后,我自己设法解决了这个问题 - 这里是表单提交操作代码:

Session.set('alertMessage', ['Message has been sent.', 'success']);
Meteor.call('sendEmail', dataText);

联系表单模板呈现回调:

Meteor.defer(function(){
  var a = Session.get('alertMessage');
  if(a){
    throwAlert(a[0], a[1]); //my custom method for nicer alert popups
    Session.set('alertMessage', null);
  }
});

最后,我必须添加persistent-session包:

meteor add u2622:persistent-session