在我的Angular应用程序中,我使用odatasources.js库从公共OData源获取数据。 以下调用返回一个我希望能够解析的promise,以便访问此promise所返回的实际数据:
var myModule = angular.module("MyModule",['ODataResources']);
myModule.controller("MyController",function($scope,$odataresource){
$scope.results =
$odataresource("http://services.odata.org/V4/Northwind/Northwind.svc/Products")
.odata()
.filter('UnitPrice','>',10)
.filter('Discontinued',true)
.orderBy('UnitsInStock','asc')
.expand('Category')
.query();
});
我想做的(对于初学者),是迭代返回的数据,并简单地将其登录到控制台:
angular.forEach($scope.results, function(value, key) {
console.log(key + ' ' + value);
});
现在看来,$ scope.results是一个未解决的承诺。
解决此承诺的正确语法是什么,并迭代实际返回的数据?
这是我目前的小提琴:
答案 0 :(得分:1)
您可以通过将回调传递给query()
方法来完成此操作。 Fiddle
var myModule = angular.module("MyModule",['ODataResources']);
myModule.controller("MyController",function($scope,$odataresource){
$scope.results =
$odataresource("http://services.odata.org/V4/Northwind/Northwind.svc/Products")
.odata()
.filter('UnitPrice','>',10)
.filter('Discontinued',true)
.orderBy('UnitsInStock','asc')
.expand('Category')
.query(function(data) {
console.log('success');
console.log(data);
angular.forEach(data, function(value, key) {
console.log(key + ' ' + value);
});
}, function(err) {
console.log('There was an error: ', err);
});
});