ExtJs BufferedStore通过id获取降序

时间:2016-07-20 18:14:07

标签: javascript extjs infinite-scroll

我有一些REST数据服务:

[{id:20},{id:16},{id:14},{id:11},{id:9},{id:8}]

请求(获取id小于15的数据)

?fromId=15&count=3

响应

[{id:14}, {id:11},{id:9}]

请求(没有fromId表示获取最后的数据)

?count=3

响应

[{id:20},{id:16},{id:14}]

有没有办法在这个API中使用BufferedStore(我在gridpanel中使用它)? 主要问题是如何使用降序fromId来生成商店请求。

UPD : 我必须使用这些数据获得无限的可滚动网格面板。但不知道如何为它配置代理和存储。 是否有可能或我应该覆盖一些方法来手动填写请求?

UPD商店:

Ext.define('Admin.store.OrderStore', {
extend: 'Ext.data.BufferedStore',
model: 'Admin.model.Order',
alias: 'store.order',
autoLoad: true,
autoDestroy: true,
remoteSort: true,
remoteFilter: true,
proxy: {
    type: 'rest',
    url: 'api/order',
    limitParam: 'size',
    startParam: 'fromId',
    extraParams: {
        filter: {}
    },
    reader: {
        type: 'json',
        rootProperty: 'data',
        totalProperty: 'total'
    }
}

});

1 个答案:

答案 0 :(得分:0)

设置pageSize,这将限制从服务器请求的行数(大小写)。每次请求都会跳30次。

您还可以使用属性leadingBufferZone

设置缓冲区
Ext.define('Admin.store.OrderStore', {
    extend: 'Ext.data.BufferedStore',
    model: 'Admin.model.Order',
    alias: 'store.order',
    autoLoad: true,
    autoDestroy: true,
    remoteSort: true,
    remoteFilter: true,

    pageSize: 10,
    leadingBufferZone: 20,

    proxy: {
        type: 'rest',
        url: 'api/order',
        limitParam: 'size',
        startParam: 'fromId',
        extraParams: {
            filter: {}
        },
        reader: {
            type: 'json',
            rootProperty: 'data',
            totalProperty: 'total'
        }
    }