我是Angular的新手,我使用一些功能将数据发布到端点 - 我完全可以控制的端点。它是一个非常简单的端点,具有CRUD功能,允许我与"客户"用于教育目的的实体。
我有部分视图,基本上列出了所有客户。在每一行上都有一个删除按钮,允许我删除该客户。删除客户时,会向端点发送请求。然后,端点将检查客户是否为" admin",如果是,则返回JSON响应,其中显示"您无法删除管理员"否则,删除客户并发回" 34;客户删除" JSON响应。
收到服务器的响应后,角度应用程序应根据响应数据执行逻辑。端点正在按预期工作。但是,我得到了一些奇怪/意外的结果。
以下是我的代码:
在" 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()进行一些检查后,"返回deffered.promise"虽然服务中的响应对象不同,但服务中的行似乎返回完全相同的结果。现在有人在这里做错了吗?
答案 0 :(得分:1)
为了详细说明我的评论,您在deferred
中返回的removeRegistredUser
对象在函数外部声明,因此将比最初使用的时间更长。我不完全确定,但我猜你不能resolve
不止一次承诺。
只需返回$http
服务
return {
removeRegistredUser: function(userMail) {
return $http.post(registratedUsersEndpoint + apiDelete + userMail + "&token=" + token);
}
};