AngularJS:$ resource对象中的访问数组

时间:2018-07-13 13:01:38

标签: arrays angularjs rest resources

我的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(?))?

2 个答案:

答案 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;
});