有关于在服务中处理 $http 的相关问题,但我想稍微详细说明一下。我希望我的控制器能够使用类似于 Angular $http API 的 API 执行服务调用:
$scope.login = function(user) {
securityService.login(user).success(function(data) {
$scope.data = data;
}).error(function(data) {
$scope.error = data;
});
};
这是一个很好的可读 API。从表面上看,我在服务 API 中需要做的就是:
return {
name : 'User Service',
login : function(user) {
return $http.post("/api/login", user);
}
};
太好了,它返回了承诺,success
并且error
伴随着消息而来。但是......如果我想处理服务中的成功和失败案例怎么办?我想维护漂亮、可读的服务 API。在这种情况下,也许我想保留用户,以便我可以公开诸如securityService.currentUser()
“securityService.isLoggedIn()”之类的方法。
我尝试了$http.post().then(...)
promise API,但它们返回了整个 HTTP 响应。同样,我想将 HTTP 与服务隔离并维护一个类似的具体回调 API。