2016-02-03 28 views
0

如果用戶已經使用Firebase進行身份驗證,我試圖將我的應用程序直接導入儀表板的初始負載。如果用戶使用Ionic登錄,則重定向到儀表板

基本上,如果用戶已經登錄,我想讓他們看到儀表板,而不是登錄頁面,當他們打開應用程序在手機上。

我試圖把這個在我的app.run()。它的工作原理和做我想要的,但它導致了一個醜陋的錯誤

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [] 

這停止前運行約20次。

我的代碼在app.run()功能:

$rootScope.$on("$stateChangeStart", function(event, next, current) { 
    if($rootScope.user) 
    { 
    if(next.name === 'login') 
    { 
    $state.go('tab.dash'); 
    event.preventDefault(); 
    } 
    else 
    { 
    console.log('Do Nothing, User Is Not Logged In'); 
    } 
} 
}); 

如何做到這一點沒有得到任何錯誤?

+0

讓你的代碼縮進的權利。它很難閱讀。這可能也是一個問題?你的'else {...}'屬於'if(next.name ==='login')'。這可能不是你想要的 – niklas

回答

0

試着將$ ionicPlatform.ready內你的代碼(沒有$ stateChangeStart)。

我爲我的應用使用了Parse,但這裏是我的代碼。

.run(function($state, $ionicPlatform, $rootScope) { 
    $ionicPlatform.ready(function() { 
     var currentUser = Parse.User.current(); 
     $rootScope.isLoggedIn = false; 

     if (currentUser) { 
      $state.go('tab.home'); 
      $rootScope.isLoggedIn = true; 
     } else { 
      $state.go('login'); 
     } 

    }); 
}) 
0

https://devdactic.com/user-auth-angularjs-ionic/

$urlRouterProvider.otherwise(function ($injector, $location) { 
 
     var $state = $injector.get("$state"); 
 
     var $rootScope = $injector.get("$rootScope"); 
 
     if ($rootScope.user) { 
 
     $state.go("app.dashboard"); 
 
     } else { 
 
     $state.go("app.login"); 
 
     } 
 
});

這應該解決您的問題,發現這個

相關問題