0

我与服务器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);

   });
4

1 回答 1

2

您需要返回由返回的承诺,$http即在 $http 前面添加一个“return”,以使您的代码如下所示:

return $http(...)
    .then(function successCallback(response) {
        return response;
    }, function errorCallback(response) {
    });

这是因为,您从控制器调用的函数应该有一个.then方法,即它应该是一个承诺。checkAvailability1in angular 返回一个承诺,需要由$http工厂中的函数返回。您只是从成功回调中返回响应,这是控制器中的方法所不期望的。

于 2016-12-27T19:29:45.133 回答