在另一页上阅读Meteor Session

时间:2014-09-15 10:03:07

标签: javascript meteor iron-router

我想显示一个"欢迎回来"用户执行signIn后主页上的消息。但是,在我使用Router.go('home');进行重定向后,我无法在Template.home.rendered = function()内阅读会话。 这是我的代码:

登录逻辑:

Meteor.loginWithPassword(username, password, function(err) {
                if (err) {
                    showError();
                } else {
                    Session.set('signInSuccess', true);
                    Router.go('home');
                }
            });

Template.home.rendered = function() {

    console.log(Session.get('signInSuccess'));
    if (Session.get('signInSuccess') == true) {
        showWelcomeMessage();
        Session.set('signInSuccess', null);
    }

}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这只是因为Template.home.rendered在您的模板首次插入DOM时只执行一次(如果通过路由机制销毁并重新插入模板,它可能会再次执行)。

在此处查看呈现的行为:http://docs.meteor.com/#template_rendered

尝试将验证码包装在自动运行中:

Template.home.rendered=function(){
  // setup a reactive computation to watch for Session variable modification
  this.autorun(functon(){
    // using Session.equals is better than checking against Session.get
    // see http://docs.meteor.com/#session_equals
    if(Session.equals("signInSuccess",true)){
      showWelcomeMessage();
      Session.set("signInSuccess",false);
    }
  });
};