我是Angular的新手,我正在使用一些功能将数据发布到端点——我可以完全控制这个端点。它是一个非常简单的端点,具有CRUD功能,使我能够与"客户"实体一起工作以达到教育目的。
我有一个局部视图,基本上列出了所有客户。每一行都有一个删除按钮,允许我删除该客户。删除客户时,会向端点发送一个请求。然后,端点将检查客户是否为"admin",如果是,则返回一个JSON响应,上面写着"You cannot delete a admin",否则,删除客户并返回"customer deleted"JSON响应。
在接收到来自服务器的响应后,angular应用程序应该根据响应数据执行逻辑。端点正在按预期工作。然而,我得到了一些奇怪/出乎意料的结果。
以下是我的代码:
在"SecretsController"中,我有以下内容:
$scope.deleteUser = function (userName, $event) {
credentialsService.removeRegistredUser(userName).then(function (response) {
if (response.data.Feedback === "Error") {
$rootScope.currentStatus = "There was a error raised: " + response.data.Message;
} else {
$rootScope.currentStatus = "User sucessfully removed.";
var currentRow = $event.target.closest("tr");
$(currentRow).fadeOut(1500, function () {
currentRow.remove();
});
};
fireResponseToGui();
}, function (error) {
$rootScope.currentStatus = "Invalid request: " + error.status + ". The response is: " + error.statusText;
fireResponseToGui();
});
};
并且在:
var deffered = $q.defer();
var credentialsServiceFactory = {};
credentialsServiceFactory.removeRegistredUser = function (userMail) {
$http.post(registratedUsersEndpoint + apiDelete + userMail + "&token=" + token)
.then(function (response) {
deffered.resolve(response);
}, function (error) {
deffered.reject(error);
});
return deffered.promise;
};
这就是问题所在。在使用console.log()进行了一些检查后,服务中的"return deffered.proped"行似乎返回了完全相同的结果,尽管服务中的响应对象不同。现在有人知道我做错了什么吗?
为了详细说明我的注释,您在removeRegistredUser
中返回的deferred
对象是在函数外部声明的,因此将比最初使用的时间更长。我不完全确定,但我想,你不能不止一次承诺resolve
。
只需返回$http
服务创建的承诺
return {
removeRegistredUser: function(userMail) {
return $http.post(registratedUsersEndpoint + apiDelete + userMail + "&token=" + token);
}
};