在我的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/

10-09 14:31