帮助!我想知道如何阻止它?使用角度ui-router& amp;后,我遇到了无限消化循环的问题。 angularFire。我发现循环不断下降到$ stateChangeStart甚至调用登录状态。这是我的控制台日志。
1476969257159 Start: {} -> dashboard{}
Auth errorAUTH_REQUIRED
1476969259545 Start: {} -> login{}
1476969260671 Start: {} -> dashboard{}
Auth errorAUTH_REQUIRED
1476969263828 Start: {} -> login{}
1476969266255 Start: {} -> dashboard{}
我用这种方式编码我的ui-router
$rootScope.$on("$stateChangeError",function (ev,toSt,toPa,fromSt,fromPa,error) {
// We can catch the error thrown when the $requireSignIn promise is rejected
console.log("Auth error" + error);
if (error === "AUTH_REQUIRED") {
$state.go("login");
}
});
并且
$urlRouterProvider
.when('/', '/dashboard')
.when('','/')
.otherwise('/404');
我拥有的国家,
$stateProvider
.state('dashboard', {
url: '/dashboard',
controller: 'dashboardCtrl',
templateUrl: 'templates/dashboard/dashboard.html'
resolve: {
// controller will not be loaded until $requireSignIn resolves
// Auth refers to our $firebaseAuth wrapper in the factory below
"currentAuth": ["wifAuth", function(wifAuth) {
// console.log ("dashboard check");
// $requireSignIn returns a promise so the resolve waits for it to complete
// If the promise is rejected, it will throw a $stateChangeError (see above)
return wifAuth.$requireSignIn();
}]
}
})
.state('login',{
url: '/login',
templateUrl: 'templates/auth/login.html',
resolve: {
// controller will not be loaded until $waitForSignIn resolves
// Auth refers to our $firebaseAuth wrapper in the factory below
"currentAuth": ["wifAuth", function(wifAuth) {
// console.log ("login check");
// $waitForSignIn returns a promise so the resolve waits for it to complete
return wifAuth.$waitForSignIn();
}]
}
})
答案 0 :(得分: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("landing");
// $state.go("login");
}