【问题标题】:How do I get backbone-pageable to return correct length?如何让骨干可分页返回正确的长度?
【发布时间】:2013-10-19 13:11:08
【问题描述】:

你好全能社区,

我正在尝试将 bbGrid 与骨干分页一起使用。我已经设法让分页工作,因为我可以将 page 和 per_page 发送到服务器,并且 bbGrid 显示正确的项目数和页码。但我无法让分页在网格中工作,因为我的集合没有返回正确的长度值。

这是我的收藏:

define([ 
    'backbone-pageable',
    'models/DeliveryModel' 
], function(BackbonePageable, DeliveryModel) {

    var DeliveryCollection = Backbone.PageableCollection.extend({

        model : DeliveryModel,

        url : '/UIServices/rs/material/v1/deliveries',

        // Parse server response to handle total number of items
        parseState: function (resp, queryParams, state, options) {
            return {totalRecords : parseInt(options.xhr.getResponseHeader("X-Result-Counter"))};
        }
    });

    return DeliveryCollection;
});

我希望 collection.length 返回 X-Result-Counter 的值,但它总是返回 per_page 的值。我错过了什么?

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    collection.length 返回集合中包含的模型的长度。在这种情况下,它是 per_page 长度,因为只有当前页面的模型存储在集合中。

    如果你想检索总长度,你应该使用collection.state.totalRecords。

    【讨论】:

    • 恐怕这对我没有帮助,因为 bbGrid 使用长度属性来设置可用页面的数量。有没有人找到解决此问题的方法?否则,我将需要使用不同的网格组件——我们的系统发生了很大的变化。
    【解决方案2】:

    经过大量检查,我得出的结论是 bbGrid 和主干分页的组合不是一个好主意。您可能可以破解 bbGrid 以使用服务器端分页,但更好的解决方案是更改网格实现。

    我决定改用 Backgrid,它的工作原理与 bbGrid 几乎相同。我必须为标题列构建自己的搜索框,并为选择每页的项目数构建自己的选择器,但这只是几行代码。

    所以我的建议是:如果你需要服务器端的分页、排序和搜索;在 bbGrid 之前选择 Backgrid!

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      相关资源
      最近更新 更多