AngularJS HTTP 资源 - 响应函数未定义



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

它完美地执行HTTP调用,我可以在Google开发人员工具上的网络中看到我的响应是正确的。但是,在尝试使用响应数据时,我不断收到"类型错误:未定义不是一个函数"。

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

HTTP 资源

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

角度 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?

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

例如:

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

您的语法看起来有问题,请改为遵循以下方法:

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

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

你可以尝试这样的东西(有一个函数)

$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);
    });

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

由于我现在无法发表评论,因此根据需要获取第一项的方法很简单: $scope.teams = Sports.get($scope.sport)[0];

最新更新