2016-10-10 3 views
1

У меня есть следующий код, который будет перенаправлен на страницу «./mainlandingpage» после успешной проверки подлинности. Вот код из контроллера:

cognitoUser.authenticateUser(authenticationDetails, { 
     onSuccess: function (result) { 
      // pass token to use for getting credentials later 
      sessionStorage.Token = result.getIdToken().getJwtToken(); 
      $scope.messageText = globalData.LoggingIn; 
      $location.path('/mainlandingpage'); 
      console.log(' after location'); 

     }, 

     onFailure: function(err) { 
      alert(err); 
     } 

Консоль из Firebug показывает следующее:

POST https://cognito-idp.ap-northeast-1.amazonaws.com/200 OK 704ms 
POST https://cognito-idp.ap-northeast-1.amazonaws.com/200 OK 401ms 
after location 

Так, я знаю, что код прошел через $ location.path линии, но моя проблема нет ничего происходит со страницей, пока я не щелкнул что-то на странице (не обязательно должна быть кнопка). Это нормальное поведение?

ответ

2

Вы вносите изменения $location Путь со стороны Угловой мир (т. Е. Пользовательское событие authenticateUser's onSuccess событие). Вот почему изменения не отражают мгновенно в URL-адресе.

Изменение угловых привязок от внешнего мира не обновляет текущие изменения непосредственно на странице, если оно не проходит через цикл дайджеста. Чтобы эти изменения произошли, вы должны вызвать цикл дайджеста вручную, чтобы сообщить системе Angular digest, что некоторые изменения произошли в контексте приложения. Так как вам нужно начать цикл дайджеста, чтобы синхронизировать их. Для начала цикла дайджеста вы можете использовать $timeout (наиболее предпочтительно)/$scope.$apply функция.

//inject `$timeout` in controller function 
$timeout(function(){ 
    $location.path('/mainlandingpage'); 
}) 
+0

Круто. это сработало. Спасибо за ваше объяснение. –

+0

@leoc Желаю знать, что, спасибо:) \ –

0
cognitoUser.authenticateUser('authenticationDetails', function($location) { 
$location.path('/mainlandingpage'); 
     //your code here....... 
}); 

Вы должны объявить $ местоположение в функции, как показано above.try это

+0

зависимость может быть введена на функцию уровня «контроллер», что у вас неверно. –

Смежные вопросы