2015-01-22 5 views
0

Я хочу отправить уведомление по электронной почте и показать об этом (ниже представить код функции):Session переменная задана после отправки электронной почты

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: '[email protected]', 
    from: '[email protected]', 
    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 - кто может помочь мне с этим?

ответ

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 
Смежные вопросы