使用 filterBy() 应用筛选器时,从 ExtJs 存储中清除筛选器的最快方法

Fastest way to clear filter from ExtJs store when filter is applied by using filterBy()

本文关键字:筛选 清除 存储 方法 ExtJs filterBy 应用 使用      更新时间:2023-09-26

我正在使用ExtJS 4.1。我正在使用商店的clearFilter()从商店中删除过滤器。我正在使用filterBy方法将过滤器应用于商店。我正在过滤所有名字不是罗纳尔多的记录。

清除过滤器后,我加载一个包含网格(附加到商店)的视图。但是当我加载网格时,我仍然可以看到过滤器未清除。该商店是本地商店。我没有在商店上应用任何分组。商店仅使用一种模型。

myStore.filterBy(function (record) {
    if (record.get('Name') != 'Ronaldo') {
        return true;
    }
});

虽然所有这些都工作正常,但是当我使用 clearFilter() 清除过滤器时,需要一些时间。当使用filterBy()应用过滤器时,是否有更快''更好''正确的方法来清除商店中的过滤器?

当您使用clearFilter()时,如果您使用了filterBy()filter(),或者在商店中配置了过滤器,则没有区别。

以下是清除筛选器时发生的情况:

  1. 清除存储上的筛选器集合
  2. 过滤
  3. 后的数据将替换为存储在快照中的原始(未过滤)数据
  4. "
  5. 数据更改"和"刷新"事件在存储上触发

请注意,您可以使用 clearFilter(true) 禁止触发的事件,如果要在清除现有筛选器后再次筛选存储,这可能很有用。

如果清除商店的过滤器执行缓慢,则它可能与步骤 3 触发的布局过程(在您的网格或您使用商店的任何内容上)有关。

另请参阅文档或源代码。

这是我的最佳答案,清除filterBy 函数:

 myStore.filterBy(function (record) {
                return true;
        });

我刚刚做到了,希望它有所帮助

只需调用 a:

myStore.reload();

每当要使用 filterBy 删除筛选器集时。