使用filterBy()应用过滤器时从ExtJs存储清除过滤器的最快方法

Sha*_*der 8 javascript extjs extjs4.1 extjs-stores

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

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

myStore.filterBy(function (record) {
    if (record.get('Name') != 'Ronaldo') {
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

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

mat*_*att 11

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

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

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

请注意,clearFilter(true)如果要在清除现有过滤器后再次过滤商店,则可以通过使用来抑制要触发的事件,这可能很有用.

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

另请参阅文档源代码.