我的oracle REST-API从数据表中返回带有数组数组的JSON。
我正在使用angularJs的$resource
API来访问数据,所以我的结果看起来像这样:
Resource {$promise: Promise, $resolved: false}
$promise:Promise {$$state: {…}}
$resolved: true
count: 25
hasMore: true
items: Array(25)
0:{metricavgcount: 0, instid: 1, metric: "SQL Service Response Time", unit: "CentiSeconds Per Call", threshold: 3, …}
1:{metricavgcount: 1, instid: 1, metric: "Physical Reads Per Sec", unit: "Reads Per Second", threshold: 10000, …}
2:{metricavgcount: 2, instid: 1, metric: "Average Active Sessions", unit: "Active Sessions", threshold: 50, …}
[...]
当我尝试从$resource
对象中提取数组时,返回的结果只是一个空的/未兑现的承诺。我尝试过的:
$scope.dbData = $resource(url, {}, {
query: {
method: 'GET',
transformResponse: function (data) { return data.items;},
isArray: true
}});
所以我想我只需要将$ resource传递给视图,然后在其中进行其余操作即可。
在我能找到的每个教程中,人们只是遍历对象数组,它看起来非常简单:
<div ng-repeat="dbDat in dbData"> {{dbData.myVariable}} </div>
但是如何在html的$ resource-object中循环遍历一个数组(例如,用ng-repeat
(?))?
答案 0 :(得分:0)
请求是异步操作,因此您需要通过 $ promise 属性在请求的回调中处理请求中的数据。
来自AngularJs docs的示例:
var User = $resource('/user/:userId', {userId: '@id'});
User.get({userId: 123}).$promise.then(function(user) {
// here you can assign your fetched data to $scope
});
答案 1 :(得分:0)
您只需要将代码更改为以下内容:
$resource(url, {}, {
query: {
method: 'GET',
transformResponse: function (data) { return data.items; },
isArray: true
}
}).query(function (result) {
$scope.dbData = result;
});