#firebase #angularfire
#firebase #angularfire
Вопрос:
Я работаю над простым приложением, использующим AngularFire, и некоторые маршруты защищены с помощью примера пользовательского интерфейса-маршрутизатора из руководства AngularFire.
Когда URL-адрес пуст, ui-router обрабатывает его с $urlRouterProvider.when('/', '/account');
помощью . Но когда URL-адрес перенаправления защищен, как:
.state('account', {
controller: 'AccountCtrl',
controllerAs: 'vm',
url: '/account',
templateUrl: 'app/account/account.html',
data: {
title: '- Account'
},
resolve: {
'currentAuth': ['Auth', function(Auth) {
return Auth.$requireSignIn();
}]
}
})
выдается ошибка, приведенная ниже:
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
Пожалуйста, не могли бы вы помочь мне с этой досадной ошибкой?
Ответ №1:
Добавить
event.preventDefault ()
для остановки начального состояния
if (error === "AUTH_REQUIRED") {
//halt default event then initiate state go to new nested page
event.preventDefault();
// as of now, we go to login until landing template is up
$state.go("home");
}
Комментарии:
1. Метод preventDefault() отменяет событие, если его можно отменить, что означает, что действие по умолчанию (состояние goto ‘account’), относящееся к событию, не произойдет. пользовательский интерфейс-маршрутизатор запускает события синхронизации. Ваши коды перейдут в оба состояния «учетная запись» и «главная», даже если будет выдана ошибка AUTH_REQUIRED. Из-за этого у вас будет бесконечное количество ошибок «AUTH_REQUIRED». Поэтому используйте этот код, чтобы остановить состояние учетной записи
Ответ №2:
Auth.$requireSignIn
выдаст ошибку AUTH_REQUIRED
. Вы можете попытаться перенаправить в нужное состояние, отслеживая $stateChangeError
, где AUTH_REQUIRED
обнаружена ошибка.
// for ui-router
app.run(["$rootScope", "$state", function($rootScope, $state) {
$rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error) {
// We can catch the error thrown when the $requireSignIn promise is rejected
// and redirect the user back to the home page
if (error === "AUTH_REQUIRED") {
$state.go("home");
}
});
}]);
Комментарии:
1. проблема не в этом. У меня есть этот фрагмент кода в моем проекте.
2. получите это, надеюсь, мой второй ответ поможет вам.