Sencha Touch列表分页:限制存储的记录数量。

6
我正在使用Sencha Touch的List组件(xtype: list),并配合listPaging插件来实现无限滚动的效果,只需将autopaging: true设置为真即可。
但是,我的问题是如何仅保留存储器的记录(或列表中的行数)到一定数量,例如50条记录。
因此,当用户向下滚动时,自动加载下一页,同时删除前一页(当前页),并在向上滚动时加载前一页。
目标是限制存储器的记录数量,因为如果它将所有记录都加载(通过不断向下滚动),它会导致设备崩溃(已在iPad上测试过)。
这是有道理的,因为我在数据库中有40,000个记录。

你找到解决方案了吗? - Hunt
我认为在这种情况下,listPaging插件不会帮助您。 您需要扩展其功能以具有底部和顶部的“加载更多”标签和处理程序,因为如果您在向下滚动时清除了一些数据,则当您开始向上滚动时,您需要重新加载该数据。 - pckill
寻找,不行,还没有解决方案。 @pckill,我试着基于listPaging构建插件,但是一切都乱了。到处都是错误。 - Lee
1个回答

2

昨天我在做类似的事情,但只有下一个功能。

您可以覆盖加载新页面的方法。它是loadNextPage(),并在请求下一页之前添加store.removeAll()。

在您的列表中:

plugins: [
    {
        type: 'listpaging',
        autoPaging: true,
        noMoreRecordsText: null,
        loadMoreText: null,
        loadNextPage: function() {
            var me = this;
            if (!me.storeFullyLoaded()) {
                me.getList().getStore().removeAll();
                me.getList().setMasked(true);
                me.getList().getStore().nextPage({ addRecords: true });
            }
        }
    }
]

这仅适用于Nextprevious可能会更加复杂,但或许这可以给出一些想法。可能需要在列表顶部添加另一个cmp,触发store.previousPage()

希望能有所帮助-


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接