【问题标题】:Angularjs inifinity digest loop on AngularFire authenticationAngularFire身份验证上的Angularjs无限摘要循环
【发布时间】:2016-10-20 13:32:25
【问题描述】:

帮助!我想知道如何阻止它?使用 angular ui-router 和 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();
            }]
        }
    })

【问题讨论】:

    标签: angularjs firebase-authentication angularfire angularjs-digest


    【解决方案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");
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-14
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      相关资源
      最近更新 更多