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

时间:2017-08-18 18:39:56

标签: angularjs ngroute angularjs-ng-route

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

我设置路由器:

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控制器吗?

由于

1 个答案:

答案 0 :(得分:0)

我决定使用@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');
            }
        }
    });
}]);

不确定它看起来不错。