javascript – Angular $资源递归查询

从我正在开发的API中,我需要使用2个不同的列表,我需要占用20个项目,以避免服务器超时。

我建立的是这样的:

Items1.query().$promise
.then(function (data) {
  $scope.items1 = data.list;
  return Items2.query().$promise;
})
.then(function (data) {
  $scope.items2 = data.list;
});

使用这段代码,我正在下载整个对象列表。

两个查询返回:

{
    list: [...],
    next: true,
    limit: 20,
    last: 20
}

基本上是一个分页系统。

这两个服务都是这样的:

App.factory('Items1', ['$resource',
    function($resource) {
        return $resource('items1/:item1Id', { storeId: '@id'
        }, {
            query: {
                method: 'GET',
                isArray: false
            },
            update: {
                method: 'PUT'
            }
        });
    }
]);

我真的不知道如何使用$资源进行递归函数,以便以20的大小推送这些项目。

我写了一个例子jsfiddle来显示递归的承诺。将其转换为示例,它看起来像:

function getList(resource, list, last) {
    return resource.query({last: last}).$promise.then(function(data){
        list = list.concat(data.list);
        if (data.next) {
            return getList(resource, list, data.last);
        }
        return list;
    });
}

getList(Items1, [], 0).$promise.then(function(list) {
    $scope.items1 = list;
});
getList(Items2, [], 0).$promise.then(function(list) {
    $scope.items2 = list;
});

您需要修改角度资源,以允许您传递API调用中的最后一个参数。我假设API(如果提供该参数)将返回从它开始的下一个部分。

http://stackoverflow.com/questions/32935820/angular-resource-recursive-query

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – Angular $资源递归查询