您的位置:首页 > Web前端

Extjs6中BufferedStore组件

2016-05-03 16:47 316 查看
在使用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);
                }
            }
        }
    }
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: