以下代码段返回以下错误: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()方法。我正在使用角度版本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;
}

关于javascript - 带有$ q promise 的Angularjs $ http删除导致TypeError:对象不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28917090/

10-16 00:12
查看更多