Javascript 在使用angularJS更改路由之前提交函数
我想提交一个http请求,以检查用户是否在每次更改路由时登录。 对于angular(1.4.5)的最新版本,这是否可行 我的路线是这样的: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
// 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”并执行登录检查,而不是在每个路由上写入解析