在我的Angular应用中,我正在使用odatasources.js库从公共OData提要中获取数据。
以下调用返回一个我希望能够解析的承诺,以便获得对该承诺返回的实际数据的访问权:
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是一个未解决的承诺。
解决此承诺并迭代实际返回的数据的正确语法是什么?
这是我目前的小提琴:
http://jsfiddle.net/eugene_goldberg/gmqvq9fx/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);
});
});
关于javascript - 如何使用odataresources.js库在AngularJS应用程序中正确解析JS promise ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36361225/