我正在使用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?
答案 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];