2016-05-25 2 views
0

私は$ rootScope。その動作していない理由を理解していないのではないworking.I page.but認証されたすべてのトークン値をチェックするために$ myApp.run機能上を宣言しました。私を助けてください。

は「実行=>下の」コンソール

myApp.run(['$rootScope','$state', '$location', 'loginService', function ($rootScope,$state, $location, loginService) { 

    console.log(" under run => "); 
    $rootScope.$on('routeChangeStart', function (event, next, current) { 
     /*If route is authenticated then check if the user has access token, else return to login screen*/ 

     console.log(event); 

     if (next.$$route.authenticated) { 

      var userAuth = loginService.getUserToken(); 
      console.log(" usertoken => " +userAuth); 
      if (!userAuth) { 
       $location.path("/"); 
      } 
     } 

    }); 
}]); 

コード印刷をapp.jsが、それはイベントにオブジェクトを印刷していないし、また条件かどうかをチェックされていません。

答えて

2

$のケアう:

$rootScope.$on('$stateChangeStart',...) 
+0

私はこれが近いだと思うが、それはだ場合にのみ、UI-ルータはngRoute – shaunhusain

+0

のために、それは、私は両方同じように考える私の一日;-) –

+0

をSANE [この](HTTPをチェックするTNXを働くけれども、それはrouteChangeStartを$すべきだと思います。 //stackoverflow.com/questions/14765719/how-to-watch-for-a-route-change-in-angularjs)。 –

0
angular.module('...')..config(['$routeProvider', function($routeProvider) {...}])..run(function($rootScope, $location) { 
// register listener to watch route changes 
$rootScope.$on("$routeChangeStart", function(event, next, current) { 
    if ($rootScope.loggedUser == null) { 
    // no logged user, we should be going to #login 
    if (next.templateUrl == "partials/login.html") { 
     // already going to #login, no redirect needed 
    } else { 
     // not going to #login, we should redirect now 
     $location.path("/login"); 
    } 
    }   
}); 

奇妙に思える一つのことは、「次の」ルートオブジェクトがしたので、私は名前の一部(login.htmlと)をテストしなければならなかったということですURLやその他のものはありません。多分もっと良い方法がありますか?

関連する問題