如何获得骨干可分页以返回正确的长度?

时间:2013-10-11 12:40:39

标签: javascript backbone.js

Hello allmighty community,

我正在尝试将bbGrid与backbone-pageable一起使用。我已经设法让分页工作,我可以将页面和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的值。我错过了什么?

2 个答案:

答案 0 :(得分:2)

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

如果您想要检索总长度,则应使用collection.state.totalRecords

答案 1 :(得分:0)

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

我决定切换到Backgrid,它与bbGrid几乎一样。我必须为标题列和我自己的选择器构建我自己的搜索框,以便选择每页的项目数,但所有这些只是几行代码。

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