AngularJS HTTP资源 - 未定义的Respose函数

时间:2015-02-03 14:33:25

标签: javascript angularjs angular-http

我正在使用Angular HTTP Resource从API获取一些数据。 API上的方法实际上是一个PUT,但返回一个数据数组。 (注意,这不是我的API)

它可以完美地执行HTTP调用,我可以在Google Developer Tools的网络上看到我的回答是正确的。但是,在尝试使用响应数据时,我不断收到“TypeError:undefined不是函数”。

以下是我尝试过的一些不同的方法,每个方法都给出了相同的TypeError:

HTTP资源

.factory('Sports', ['$resource', 'SPORTS_CONFIG',
    function($resource, SPORTS_CONFIG) {
        return $resource(SPORTS_CONFIG.URL, {}, {
            get: {
                method: 'PUT', 
                isArray: true 
            }
        });
    }
])

Angular JS尝试

// Construct Sports Body
var s = new Sports($scope.sport);

// Attempt 1
s.$get({}, function(data){

});

// Attempt 2
s.$get({}).then(function(data){

});

// Attempt 3
s.$get({}).$promise.then(data){

});

修改

在查看我的错误代码之后,看起来我的HTTP资源中的'isArray'发生了错误。当我将isArray设置为false时,它会出错,因为它需要一个对象但是会得到一个数组。当我保持真实,它出错并说TypeError:undefined不是一个函数。当我点击javascript行时,它是'isArray'。

第二次编辑

我使用以下代码完成了它的工作:

$scope.teams = Sports.get($scope.sport);

然而,$ scope.teams = [0,$ promise,$ resolved]。我怎样才能得到[0]而不是$ promise和$ resolved?

4 个答案:

答案 0 :(得分:0)

你的'then'函数的参数本身应该是一个函数。

例如:

s.$get({}).then(function (data){

});

答案 1 :(得分:0)

您的语法看起来不对,请改用此方法:

$http.get('/someurl').then(function(response) {
        //do something with response.data;
      }, function(errResponse) {
        console.error('Error while fetching data');
      });

正如您所看到的,您应该传递一个从服务器传递响应的函数,然后您可以获取数据。

答案 2 :(得分:0)

您可以尝试这样的事情(带功能)

$http({
        method : "GET",
        url : "your_url"
    }).success(function(data, status, headers, config) {
        $scope.yourVariable= data;
    }).error(function(data, status, headers, config) {
        alert("Request failed. HTTP status:" + status);
    });

答案 3 :(得分:0)

由于上面的编辑,这个答案已经过时了。

由于我现在无法发表评论,因此您可以轻松获得第一个项目的方法很简单: $scope.teams = Sports.get($scope.sport)[0];