$routeProvider - 解析失败后不加载控制器

$routeProvider - not load controller after failed resolve

我想检查一下路由器中的内容。在某些情况下,我应该重定向到另一个页面。

我设置了路由器:

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

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');
            }
        }
    });
}]);

不确定它是否好看。