我的服务看起来像
//this mthod under myService
this.checkCookie = this.getAuthorization = function() {
return $http({
method: 'GET',
url: '/api/auth'
});
}
在我的路线配置中,我正在做
MyAPP.config(function($routeProvider) {
$routeProvider.
when('/', {
controller: check
}).
when('/login', {
templateUrl: '/partials/login.html',
controller: check
}).
when('/products', {
templateUrl: '/partials/products.html'
})
});
var check = function($location, myService, $q) {
if (myService.checkCookie()) {
$location.path("/products");
} else {
$location.path("/login");
}
};
带有get请求的我想检查服务器生成的会话数据是否有效。浏览器会在'/ api / auth'中发送'GET'时发送cookie信息。
问题是当我调用this.checkCookie我没有得到响应syncronoulsy作为角度返回asnyc方式的响应。根据checkCookie响应,我想重定向到'/ products'但我现在不能这样做。
我该怎么做?我需要更改以获取this.checkCookie并检查响应状态是200还是500?
答案 0 :(得分:0)
您无法使用$http
执行同步请求。要处理请求返回的承诺,您可以执行以下操作:
var check = function($location, myService, $q) {
myService.checkCookie()
.success(function() {
$location.path("/products");
})
.error(function() {
$location.path("/login");
})
};
答案 1 :(得分:0)
您必须就then
返回的承诺致电$http
:
myService.checkCookie().then(function () {
$location.path("/products");
}, function () {
$location.path("/login");
});
第一个函数是成功处理程序,第二个函数是错误(拒绝)处理程序。