2017-06-17 14 views
0

私は、ui-router 1.0.3を使ってAngular 1.5.8でアプリを作っています。 Uiルータのフックは素晴らしいですが、はブラウザリロードで動作しません。私は数字にできないんだけど

(function(app) { 
    'use strict'; 
    app.run(runFn); 

    runFn.$inject = ['$rootScope', '$transitions' ,'$localStorage']; 

    function runFn($rootScope, $transitions, $localStorage) { 

     $transitions.onStart({to:'**'}, function(transtion){ 
      $rootScope.ngProgress.start(); 
     }) 

     $transitions.onSuccess({to:'**'}, function(transtion){ 
      $rootScope.ngProgress.complete(); 
     }) 

     $transitions.onBefore({to:'login'}, function(transtion){ 
      if($localStorage.isLoggedIn > Date.now()){ 
       return transtion.router.stateService.target('selfcare.dashboard'); 
      } 
     }) 

     $transitions.onBefore({to:'selfcare.**'}, function(transtion){ 
      if(!$localStorage.isLoggedIn || $localStorage.isLoggedIn < Date.now()){ 
       $localStorage.$reset(); 
       return transtion.router.stateService.target('login'); 
      } 
     }) 
    } 

})(angular.module('selfcare')); 

(function(app) { 
    'use strict'; 
    app.config(configFn); 

    configFn.$inject = ['$stateProvider']; 

    function configFn($stateProvider) { 
     $stateProvider 
      .state('login', { 
       url: '/login', 
       component: 'loginComponent' 
      }) 
      .state('selfcare', { 
       url: '/', 
       component: 'selfCareComponent', 
       abstract: true 
      }) 
      .state('selfcare.dashboard', { 
       url: 'dashboard', 
       component: 'dashboardComponent' 
      }) 
      .state('selfcare.appHome', { 
       url: 'appHome/:id', 
       component: 'appHomeComponent' 
      }) 
      .state('selfcare.serviceHome', { 
       url: 'serviceHome/:id', 
       component: 'serviceHomeComponent' 
      }) 
    } 

})(angular.module('selfcare')); 

そして次は、遷移にフックを登録するための実行ブロックである:ここでは

は、登録状態のための私の configブロックですどこで間違っているのですか?フックは、アプリケーションが安定して正しく動作すると呼び出されますが、ブラウザのリロードでは、任意のURLを開くことができ、フックのどれも呼び出されません。

ご協力いただきますようお願い申し上げます。ありがとう

+0

次の2つの設定ブロックを貼り付けました。ランブロックを貼り付けてください。 – georgeawg

+0

@georgeawg申し訳ありませんが、私の悪い、貼り付け – pranavjindal999

答えて

0

私は何とか必要なことをすることができましたが、それが最良の方法であるかどうかわかりません。私はrunブロックに遷移を書きたいと思っていました。

フックコールバックの引数である遷移オブジェクトはを提供し、configのアプリケーションでランタイムサービスを取得するために使用できます。

(我々はまた、configブロックに$injectorを注入することができます)

(function(app) { 
    'use strict'; 
    app.config(configFn); 

    configFn.$inject = ['$transitionsProvider']; 

    function configFn($transitionsProvider) { 

     $transitionsProvider.onStart({ to: '**' }, function(transtion) { 
      transtion.injector().get('$rootScope').ngProgress.start(); 
     }) 

     $transitionsProvider.onSuccess({ to: '**' }, function(transtion) { 
      transtion.injector().get('$rootScope').ngProgress.complete(); 
     }) 

     $transitionsProvider.onBefore({ to: 'login' }, function(transtion) { 
      var $localStorage = transtion.injector().get('$localStorage'); 
      if ($localStorage.isLoggedIn > Date.now()) { 
       return transtion.router.stateService.target('selfcare.dashboard'); 
      } 
     }) 

     $transitionsProvider.onBefore({ to: 'selfcare.**' }, function(transtion) { 
      var $localStorage = transtion.injector().get('$localStorage'); 
      if (!$localStorage.isLoggedIn || $localStorage.isLoggedIn < Date.now()) { 
       $localStorage.$reset(); 
       return transtion.router.stateService.target('login'); 
      } 
     }) 
    } 

})(angular.module('selfcare')); 
関連する問題