Angular - 无法从工厂接收 $http 响应
Angular - Having troubles receiving $http response from a factory
我有一个 angular
factory
与服务器进行一些 $http
通信并返回一个字符串。但是我收到 Cannot read property 'then' of undefined
错误。我读 here and 遇到了类似的问题,但是我无法解决我的问题。
这是服务代码:
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);
});
您需要 return return 由 $http
编辑的承诺,即在 $http 前面添加一个 'return' 以使您的代码像下面这样工作:
return $http(...)
.then(function successCallback(response) {
return response;
}, function errorCallback(response) {
});
这是因为,您从控制器调用的函数应该有一个 .then
方法,即它应该是一个承诺。 angular return 中的 checkAvailability1
是一个承诺,需要由工厂中的函数 $http
return 返回。您只是 return 成功回调的响应,这不是您在控制器中的方法所期望的。
我有一个 angular
factory
与服务器进行一些 $http
通信并返回一个字符串。但是我收到 Cannot read property 'then' of undefined
错误。我读 here and
这是服务代码:
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);
});
您需要 return return 由 $http
编辑的承诺,即在 $http 前面添加一个 'return' 以使您的代码像下面这样工作:
return $http(...)
.then(function successCallback(response) {
return response;
}, function errorCallback(response) {
});
这是因为,您从控制器调用的函数应该有一个 .then
方法,即它应该是一个承诺。 angular return 中的 checkAvailability1
是一个承诺,需要由工厂中的函数 $http
return 返回。您只是 return 成功回调的响应,这不是您在控制器中的方法所期望的。