Angularjs - 无法读取未定义的 属性 'then'

Angularjs - Cannot read property 'then' of undefined

我是 angularjs 的新手,我知道有很多关于此错误的问题, 不幸的是,我在其中任何一个中都找不到适合我的问题的答案。

我有一个拥有所有功能的工厂,以及使用它们的控制器。在一个控制器中,我得到了一个 returns 数组的 GET 函数,我的大部分函数都写得几乎相同,还有一些函数的写法与这个完全相同,只是变量 names/url 不同,但是这个错误只发生在这个函数上:

控制器:

$scope.getAllFunction = function(){
         appServicesProvider.getAll($scope.var1).then(function(res){
             $scope.var2 = res;
         })
     };

工厂(appServicesProvider):

   function getAll(var1){
            $http.get(restURL+var1).then(
                    function(response){
                        return [].concat(response.data.var2)
                    }
            );
        }

正如我所说,完全相同的功能还有很多,只有这个不行,这让我更难解决。 感谢您提供的任何帮助!

你必须return承诺

  function getAll(var1){
           return $http.get(restURL+var1).then(
                    function(response){
                        return [].concat(response.data.var2)
                    }
            );
        }


或者您可以使用 $q

将您的工厂重写为 return 包含已解决承诺的对象
app.factory('appServicesProvider', function() {
    return {
        getAll: function(var1) {
            var defer = $q.defer();
            $http.get(restURL + var1).then(function(response) {
                defer.resolve([].concat(response.data.var2));
            }).catch(function(response, status) {
                defer.reject(response.data.message);
            });
            return defer.promise;;
        }
    }
});