2017-08-18 9 views
1

ルータで何かを確認したいと思います。ある状態では、私は別のページにリダイレクトする必要があります。

when('/login', { 
templateUrl: 'login.html', 
controller: 'Login', 
resolve : { 
    'checkLogin': ['checkLogin', function(checkLogin){ 
     return checkLogin.isLogin(); 
    }] 
} 
}) 

や工場:

私は、ルータの設定

app.factory('checkLogin', [function() { 
    "use strict"; 
    return { 
     isLogin: function() { 
      if (loggin === 1) { 
       $location.path('/home'); 
      }; 
     } 
    }; 
}]); 

をそしてloggin === 1場合は、/homeにリダイレクトしますが、それはとにかくLoginコントローラを呼び出します。どうすれば無効にできますか?この場合コントローラLoginを起動しないでください。私は@PankajParkarによる助言$locationChangeStartを使用することにしました

おかげ

+0

*はどういう意味ですか?とにかくログインコントローラを呼び出します。どうすれば無効にできますか?この場合、ログインコントローラを起動しないでください* –

+0

@PankajParkarつまり、ユーザがログインしている場合、私は '/ home'にリダイレクトする必要があり、' Login'コントローラを実行する必要はありません。 'Login'コントローラの中で私はAPIを呼び出します。私はチェックしました - アプリは '/ home'にリダイレクトし、同時にそのAPIを呼び出します。私の英語には申し訳ありません。 – Nick

+0

また、 'login'コントローラの内部に' console.log(これはログインコントローラです) 'を追加しました。アプリケーションは私を '/ home'にリダイレクトして、私は' this login controller'を私のコンソールに見ることができます。 – Nick

答えて

0

app.run(['$rootScope', '$location', function($rootScope, $location) { 
    "use strict"; 
    $rootScope.$on('$locationChangeStart', function(event, next, current) { 
     if (next.indexOf('login') !== -1) { 
      if (loggin === 1) { 
       event.preventDefault(); 
       $location.path('/home'); 
      } 
     } 
    }); 
}]); 

よく分かりません。

関連する問題