Javascript 在使用angularJS更改路由之前提交函数

Javascript 在使用angularJS更改路由之前提交函数,javascript,angularjs,Javascript,Angularjs,我想提交一个http请求,以检查用户是否在每次更改路由时登录。 对于angular(1.4.5)的最新版本,这是否可行 我的路线是这样的: // configure routes app.config(['$routeProvider', function($routeProvider){ $routeProvider // route for the home page .when('/', { templateUrl : 'd

我想提交一个http请求,以检查用户是否在每次更改路由时登录。 对于angular(1.4.5)的最新版本,这是否可行

我的路线是这样的:

// configure routes
app.config(['$routeProvider', function($routeProvider){
    $routeProvider

        // route for the home page
        .when('/', {
            templateUrl : 'directives/about.html',
            controller  : 'mainController'
        })

        // route for the home page
        .when('/login', {
            templateUrl : 'directives/login.html',
            controller  : 'loginContoller'
        })

        // route for the about page
        .when('/about', {
            templateUrl : 'directives/about.html',
            controller  : 'aboutController'
        })

        // route for the contact page
        .when('/contact', {
            templateUrl : 'directives/contact.html',
            controller  : 'contactController'
        });
}]);
如果查看a,您将看到
when()
方法采用的参数

route
agment是一个对象,有一个属性称为
resolve
。 resolve属性是应该解析的依赖项的映射

$routeProvider.when('/', {
    templateUrl: 'directives/about.html',
    controller: 'mainController',
    resolve: {
        loginCheck: function (myLoginCheckService) {
            return myLoginCheckService();//could return a $q.promise object.
        }
    }
});
resolve
-应注入控制器的可选依赖关系映射。如果这些依赖项中的任何一个是承诺,路由器将在控制器实例化之前等待它们全部被解析或一个被拒绝。如果成功解析所有承诺,则将注入已解析承诺的值,并触发
$routeChangeSuccess
事件。如果任何承诺被拒绝,将触发
$routeChangeError
事件

AngularJS文件

如果查看a,您将看到
when()
方法采用的参数

route
agment是一个对象,有一个属性称为
resolve
。 resolve属性是应该解析的依赖项的映射

$routeProvider.when('/', {
    templateUrl: 'directives/about.html',
    controller: 'mainController',
    resolve: {
        loginCheck: function (myLoginCheckService) {
            return myLoginCheckService();//could return a $q.promise object.
        }
    }
});
resolve
-应注入控制器的可选依赖关系映射。如果这些依赖项中的任何一个是承诺,路由器将在控制器实例化之前等待它们全部被解析或一个被拒绝。如果成功解析所有承诺,则将注入已解析承诺的值,并触发
$routeChangeSuccess
事件。如果任何承诺被拒绝,将触发
$routeChangeError
事件

AngularJS文件

创建一个助手方法

function auth(configs){
    // write your auth code here
    return configs;
}
在路由器上是这样的

.when('/', auth({
        templateUrl : 'directives/about.html',
        controller  : 'mainController'
    }))
创建一个助手方法

function auth(configs){
    // write your auth code here
    return configs;
}
在路由器上是这样的

.when('/', auth({
        templateUrl : 'directives/about.html',
        controller  : 'mainController'
    }))

可以通过在Angularjs的run块中添加routeChangeStart来实现

app.run(function($rootScope, $location) {
    $rootScope.$on( "$routeChangeStart", function(event, next, current) {
        if ($rootScope.loggedInUser == null) {
        // no logged user, redirect to /login
            if ( next.templateUrl === "partials/login.html") {
            } else {
                $location.path("/login");
            }
        }
    });
}); 

可以通过在Angularjs的run块中添加routeChangeStart来实现

app.run(function($rootScope, $location) {
    $rootScope.$on( "$routeChangeStart", function(event, next, current) {
        if ($rootScope.loggedInUser == null) {
        // no logged user, redirect to /login
            if ( next.templateUrl === "partials/login.html") {
            } else {
                $location.path("/login");
            }
        }
    });
}); 

这很好,但我更喜欢app.run使用$rootScope.$on-“$routeChangeStart”并执行登录检查,而不是在每个路由上写入解析这很好,但我更喜欢app.run使用$rootScope.$on-“$routeChangeStart”并执行登录检查,而不是在每个路由上写入解析