Angularjs $http delete с обещанием $q приводит к TypeError: объект не является функцией
Следующий фрагмент кода возвращает следующую ошибку: 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 таким же образом, и у них нет этой проблемы. Только УДАЛЕНИЕ вызывает эту проблему. Когда я отлаживаю его, он просто пропускает методы $http success(), error() и then(). Я использую угловую версию 1.3.13.
1 ответ
Решение
Менять 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;
}