我有一个angular
factory
与服务器进行一些$http
通信并返回一个字符串。但是我收到Cannot read property 'then' of undefined
错误。我看了here和here但遇到类似的问题,但我无法解决问题。
这是服务代码:
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);
});
答案 0 :(得分:2)
您需要返回/usr/bin/cpp-4.7 -C -P myfile.F90 > myfile.f90
返回的承诺,即添加'返回'在$ http前面让你的代码如下所示:
$http
这是因为,你从控制器调用的函数应该有一个return $http(...)
.then(function successCallback(response) {
return response;
}, function errorCallback(response) {
});
方法,即它应该是一个promise。 angular中的.then
返回一个promise,它需要在工厂中由函数checkAvailability1
返回。您只是从成功回调中返回响应,这是您的方法在控制器中不期望的。