如何使用ngResource处理服务器分页?

时间:2014-01-29 15:03:22

标签: angularjs pagination angularjs-resource

我的方案是我想使用ngResource从Google云端硬盘中检索文件列表。 Drive通过在JSON响应中包含nextPageToken来对其结果进行分页,null表示不再有结果。

我需要一个承诺或回调,指的是所有页面的完成,而不是每个页面之后。 ngResource有一种优雅的方式来处理这个问题吗?

1 个答案:

答案 0 :(得分:1)

我认为ngResource默认情况下不会为你做这样的事情,但是你可以通过使用递归闭包并在其中调用ngResource来实现它,直到你获得所有数据为止。

var dataSet = [];
function getAllData(){
  var files = $resource('your url');
  files.get(function(data){
    if (data){
      dataSet.push(data); //or whatever   
      getAllData();
    }
  })();
}

以下是具有实际Google云端硬盘语义的测试版

getAllFiles(nextLink:string){
    var self = this;
    if (nextLink) {
        var files = self.refs.resource(nextLink);
    } else {
        var files = self.refs.resource(this.DRIVE_URL);
    }
    files.get(function(data){
        console.log("fetched "+data.items.length);
        self.allFiles.push(data['items']);
        if (data['nextLink']){
            self.getAllFiles(data['nextLink']);
        }
    });
}