2015-03-07 1 views
1

Следующий фрагмент кода возвращает следующее сообщение об ошибке: 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(), error() и then(). Я использую угловую версию 1.3.13.

+0

Как использовать 'service.deleteProfile'? Разделите код, где вы называете эту функцию. –

ответ

2

изменение 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; 
} 
+1

Просто не видел. Глядя повсюду, но не это. Работа в выходные не годится;) Спасибо! – magiccrafter

+0

я тоже сделал ту же ошибку .. так что первое, что я проверил :) – harishr

 Смежные вопросы

  • Нет связанных вопросов^_^