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

时间:2013-11-04 12:33:31

标签: javascript extjs extjs4.1 extjs-stores

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

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

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

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

3 个答案:

答案 0 :(得分:11)

当您使用clearFilter()时,如果您使用filterBy()filter()或在商店中配置了过滤器,则无效。

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

  1. 清除商店中的过滤器集合
  2. 过滤后的数据将替换为存储在快照中的原始(未过滤)数据
  3. 在商店中触发“datachanged”和“refresh”事件
  4. 请注意,您可以使用clearFilter(true)来禁止触发事件,如果您想在清除现有过滤器后再次过滤商店,则可能会有用。

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

    另请参阅docssource code

答案 1 :(得分:3)

继承人我最好的答案,清除filterBy函数:

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

我刚刚做到了,希望它的帮助

答案 2 :(得分:0)

只需致电:

myStore.reload();

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