8

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

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

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

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

4

3 回答 3

13

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

清除过滤器时会发生以下情况:

  1. 商店上的过滤器集合被清除
  2. 过滤后的数据被存储在快照中的原始(未过滤)数据替换
  3. 在存储上触发“datachanged”和“refresh”事件

请注意,clearFilter(true)如果您想在清除现有过滤器后再次过滤存储,您可以使用 which 来抑制要触发的事件。

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

另请参阅文档源代码

于 2013-11-04T13:32:32.613 回答
4

这是我最好的答案,清除 filterBy 功能:

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

我刚做了,希望对你有帮助

于 2014-08-30T04:14:37.103 回答
0

只需调用:

myStore.reload();

每当您想使用 filterBy 删除过滤器集时。

于 2014-02-20T12:40:24.997 回答