Extjs6中BufferedStore组件

在使用BufferedStore做滚动条加载的时候如果数据变动频繁,就会出现加载问题。

出现情况步骤:

1、滚动条拖动到末尾,等待加载完成。

2、拖动到中间位置,改变数据量。比如6000条数据改变为6010。

3、在拖动到末尾,就会出现问题,grid一直存在遮罩效果,正在加载。   


当加载最后一页的时候执行了me.fireEvent('cachemiss', me, start, end);//出现正在加载中,

如果要消除遮罩效果需要执行 me.fireEvent('cachefilled', me, start, end);

需要执行监听pageadd触发pageAddHandler方法。

跟踪发现prefetchRange方法中me.pageCached(page)最后一页结果是加载完成的,所以不会触发pageadd事件,所以加入 page == endPage,最后一页重新加载一次数据。


解决办法:

重写BufferedStore

代码:

Ext.define('expand.overrides.data.BufferedStore', {
    override :'Ext.data.BufferedStore',
    
    prefetchRange: function(start, end) {
        var me = this,
            startPage, endPage, page,
            data = me.getData();
        if (!me.rangeCached(start, end)) {
            startPage = me.getPageFromRecordIndex(start);
            endPage = me.getPageFromRecordIndex(end);
            data.setMaxSize(me.calculatePageCacheSize(end - start + 1));
            for (page = startPage; page <= endPage; page++) {
                if (!me.pageCached(page) || page == endPage) {
                    me.prefetchPage(page);
                }
            }
        }
    }
});



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值