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」を追加するなど、返された promise を返す必要があります。

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

これは、コントローラーから呼び出した関数に.thenメソッドが必要なためです。つまり、promise である必要があります。in angular は、ファクトリcheckAvailability1の関数によって返される必要がある promise を返します。$httpコントローラーのメソッドで予期されていない成功コールバックからの応答を返しているだけです。

于 2016-12-27T19:29:45.133 に答える