2014-12-04 4 views
0

У меня есть этот настраиваемую форму Войтиошибка Войти обработки метеор

<template name="login"> 
{{> alert}} 
    <form> 
     <input type="text" name="username" > 
      <input type="password" name="password" > 
     <input type="submit" value="Login" > 
    </form> 
</template> 

<template name="alert"> 
    {{alert}} 
</template> 

Я хочу поставить уведомление об ошибке, если пользователь не смог войти в систему. это код для запуска предупреждающего сообщения.

Template.login.events({ 
    'submit': function(event){ 
     event.preventDefault(); 
     var usernameVal = event.target.username.value; 
     var passwordVal = event.target.password.value; 
     Meteor.loginWithPassword(usernameVal, passwordVal, function(err){ 
      if(err){ 
       Session.set('alert','login failed!'); 
       return false; 
      } 
      else{ 
       Session.set('alert',null); 
      } 
     }); 
    } 
}); 

Template.alert.helpers({ 
    alert:function(){ 
     return Session.get('alert'); 
    } 
}); 

Проблема заключается в том, когда я вызвать ошибку и попытайтесь открыть другую страницу и вернуться на страницу входа в систему, предупреждающего сообщения по-прежнему там. Сообщение оповещения исчезает только при обновлении моего браузера или входе в систему.

Каков наилучший способ использования обработки ошибок, поэтому сообщение с предупреждением запускается только один раз. Это включает обработку ошибок других форм.

Спасибо прежде.

ответ

0

Вы можете очистить вар Session, когда вы вернетесь к виду, как это:

Template.login.rendered = function() { 
    Session.set('alert', null); 
}; 
0

Вы можете задать тайм-аут на ваших предупреждений. Определите глобально в файле «app.js», если вы хотите, чтобы это поведение для всех ваших предупреждений. Я получил это в своем приложении метеорита. Ваши предупреждения будут оставаться в течение 6 секунд:

Deps.autorun(function() { 
if(Session.get('alert')){ 
    setTimeout(function() { 
      Session.set('alert',''); 
     }, 6000); 
    } 
}); 
Смежные вопросы