【问题标题】:Session variable unset after sending email发送电子邮件后未设置会话变量
【发布时间】:2015-03-20 23:20:24
【问题描述】:

我想发送一封电子邮件并显示有关它的通知(以下是提交功能代​​码):

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 变量正确获取会话值:

Array['邮件已发送', '成功']

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

undefined

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

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

它返回undefined - 任何人都可以帮助我吗?

【问题讨论】:

    标签: javascript node.js meteor session-variables


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 2010-12-07
      • 2016-02-20
      相关资源
      最近更新 更多