【问题标题】:Waiting until all AngularJS $resourse paginated requests are finished等待所有 AngularJS $resource 分页请求完成
【发布时间】:2014-02-27 00:23:45
【问题描述】:

我正在使用 AngularJS $djResource 对 RESTful Django API 的分页请求。我的问题是如何知道最后一个分页请求何时完成?我面临的问题是$djResource.query() 返回的承诺在返回第一页后立即标记为已解决。

我的用例:我正在加载应该在地图上显示的地点的分页列表,我必须调整地图视口以使所有地点都可见。

【问题讨论】:

    标签: javascript angularjs pagination


    【解决方案1】:

    客户端始终不知道当前页面是否为最后一页。

    一些解决方案是

    在响应中有一个more 属性来说明是否还有更多页面

    {
        ....
        more: false,
        currentPage: 2,
    }
    

    (或) 在响应中包含属性totalPages

    {
        ....
        totalPages: 10,
        currentPage: 2,
    }
    

    (或) 在响应中包含属性 nextLinkpreviousLink

    {
        .... 
        nextLink: /places?page=4,
        previousLink: /places?page=2,
        currentPage: 3,
    }
    

    【讨论】:

    • 我认为前端没有分页知识并不是100%正确的。我已经在响应中有 total/nextLink/peviousLink 属性,并且 angular-django-rest-resource 自己处理页面(我正在使用 angular-django-rest-resource ,它知道分页并将页面流式传输到 promise 对象中)。
    • 你想达到什么目的?
    • 正如我在上面所写的,我正在加载应该在地图上显示的地点的分页列表,我必须调整地图视口以使所有地点都可见。显然,只有在所有点都加载完毕后,我才能做到这一点。我可能可以手动遍历页面,但我想知道是否有更好的方法来解决它。
    • 我猜,你想要一个工具来自动获取你所有的地方。我认为,您可以使用“limit=0”之类的请求查询选项。如果限制为零,那么您可以在单个请求中发送所有位置,而不是多个分页请求。它也节省了带宽。
    【解决方案2】:

    解决方案很简单:使用$djResourcesuccess 回调,在所有页面加载后调用。

    【讨论】:

      猜你喜欢
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      相关资源
      最近更新 更多