Angularjs $http delete with $q promise leads to TypeError: object is not a function
Angularjs $http delete with $q promise leads to TypeError: object is not a function
以下代码段returns出现以下错误:TypeError: object is not a function
service.deleteItem = function(itemId) {
var def = $q.defer();
$http.delete(SERVER_REST_PATH + '/items/' + itemId)
.success(function() {
def.resolve();
}).error(function(data, status) {
def.reject("Error deleting the item");
});
return def.promise();
};
如果我按如下方式重写它,它会起作用:
service.deleteItem = function(itemId) {
return $http.delete(SERVER_REST_PATH + '/items/' + itemId);
};
我在我的应用程序中使用的所有其他 $http 方法(即 GET、PUT、POST)都以相同的方式用 $q 包装,它们没有这个问题。只有 DELETE 导致此问题。当我调试它时,它只是跳过 $http 的 success()、error() 和 then() 方法。我正在使用 angular 版本 1.3.13。
将 return def.promise();
更改为 return def.promise
;
示例:
function deferredTimer(success) {
var deferred = $q.defer();
$timeout(function() {
if (success) {
deferred.resolve({ message: "This is great!" });
} else {
deferred.reject({ message: "Really bad" });
}
}, 1000);
return deferred.promise;
}
以下代码段returns出现以下错误:TypeError: object is not a function
service.deleteItem = function(itemId) {
var def = $q.defer();
$http.delete(SERVER_REST_PATH + '/items/' + itemId)
.success(function() {
def.resolve();
}).error(function(data, status) {
def.reject("Error deleting the item");
});
return def.promise();
};
如果我按如下方式重写它,它会起作用:
service.deleteItem = function(itemId) {
return $http.delete(SERVER_REST_PATH + '/items/' + itemId);
};
我在我的应用程序中使用的所有其他 $http 方法(即 GET、PUT、POST)都以相同的方式用 $q 包装,它们没有这个问题。只有 DELETE 导致此问题。当我调试它时,它只是跳过 $http 的 success()、error() 和 then() 方法。我正在使用 angular 版本 1.3.13。
将 return def.promise();
更改为 return def.promise
;
示例:
function deferredTimer(success) {
var deferred = $q.defer();
$timeout(function() {
if (success) {
deferred.resolve({ message: "This is great!" });
} else {
deferred.reject({ message: "Really bad" });
}
}, 1000);
return deferred.promise;
}