【问题标题】:How do i deal with server pagination with ngResource?如何使用 ngResource 处理服务器分页?
【发布时间】:2014-02-21 11:28:48
【问题描述】:

我的场景是我想使用 ngResource 从 Google Drive 中检索文件列表。 Drive 通过在 JSON 响应中包含 nextPageToken 对其结果进行分页,null 表示没有更多结果。

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

【问题讨论】:

标签: angularjs pagination angularjs-resource


【解决方案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 Drive 语义的测试版本

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']);
        }
    });
}

【讨论】:

  • 那行得通。对于那些可能会关注的人,我已经编辑了您的答案,以包括我最终得到的实际驱动器特定版本。
猜你喜欢
  • 2018-01-14
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2015-06-12
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多