2015-01-11 4 views
0

Я хотел бы показать анимацию «загрузка ...» пользователям, входящим в мое приложение.Переход триггера к маршруту загрузки после аутентификации ember-simple-auth

Ember автоматически переходит на маршрут загрузки (если есть), если модель возвращает обещание, поэтому дает возможность отображать шаблон загрузки, пока сервер не ответит.

Теперь у меня есть форма входа в систему, где submit запускает действие «authenticate» в моем контроллере (что определено в LoginControllerMixin). Это, похоже, не считается обещанием ember, поэтому приложение не переходит к маршруту загрузки.

Может быть, есть способ обойти это с помощью простого Идентом состояния сеанса, но я не могу понять это

любой помощь будет оценен

ответ

1

Я думаю, погрузочные маршруты работают только красиво, когда есть переход и рамка ждет обещанного возвращенного model крюка адресата маршрута к разрешить. Это не относится к действию Ember Simple Auth's LoginControllerMixin's authenticate. Для отображения сообщения загрузки вы можете просто переопределить authentication действия, хотя:

export default Ember.Controller.extend(LoginControllerMixin, { actions: { authenticate: function() { var _this = this; this.set('loading', true); this._super().then(function() { _this.set('loading', false); }, function() { _this.set('loading', false); }); } } });

+0

Мне нравится этот подход, как я могу отобразить сообщение загрузки в форме входа и не переход на совершенно новый экран. Вход может выйти из строя, и его лучше отобразить сообщение об ошибке перед выходом из формы. Я думаю, что, поскольку пароль очищается, не показывая какое-либо сообщение, вы получаете некоторую неопределенность для пользователя, даже если логин занимает всего секунду. Благодаря! – balafi

2

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

Вы могли бы изменить логику проверки подлинности на что-то вроде этого:

this.transitionTo('loading').then(function(){  
    authenticateLogicCall().then(function(){ 
    this.transitionTo('authenticatedResource'); 
    }); 
}); 
Смежные вопросы