Угловой - Проблемы с получением ответа http от фабрики
У меня есть angular
factory
делать некоторые $http
связь с сервером и возвращение строки. Однако я получаю Cannot read property 'then' of undefined
ошибка. Я читал здесь и здесь с похожими проблемами, однако мне не удалось решить мою проблему.
Это сервисный код:
factory("availabilityService", ['$http', function ($http) {
return {
checkAvailability1: function (element, string) {
// ..... some object creation code ......
$http({
method: 'POST',
url: 'server/server.php',
data: AvailableObj,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
.then(function successCallback(response) {
return response;
}, function errorCallback(response) {
});
}
}
}]);
Внутри controller
:
$scope.checkAvailability = function (element, string) {
availabilityService.checkAvailability1(element, string).then(function (response) { //on this line the error occurs
console.log(response);
});
1 ответ
Вам необходимо вернуть обещание, возвращенное $http
т.е. добавьте 'return' перед $ http, чтобы ваш код работал, как показано ниже:
return $http(...)
.then(function successCallback(response) {
return response;
}, function errorCallback(response) {
});
Это потому, что функция, которую вы вызвали из контроллера, должна иметь .then
метод на это т.е. это должно быть обещание. checkAvailability1
в угловых возвращает обещание, которое должно быть возвращено вашей функцией $http
на заводе. Вы просто возвращаете ответ от обратного вызова success, который не ожидается вашим методом в контроллере.