我正在使用 ExtJS 4.1。我正在使用商店的 clearFilter()
从商店中删除过滤器。我正在使用 filterBy
方法对商店应用过滤器。我正在过滤名称不是罗纳尔多的所有记录。
清除过滤器后,我加载了一个包含网格(附加到商店)的 View 。但是当我加载网格时,我仍然可以看到过滤器没有被清除。 该商店是本地商店。我没有在商店中应用任何分组。商店只使用一种型号。
myStore.filterBy(function (record) {
if (record.get('Name') != 'Ronaldo') {
return true;
}
});
虽然所有这些工作正常,但是当我使用 clearFilter()
清除过滤器时,它需要一些时间。当使用 filterBy()
应用过滤器时,是否有任何更快\更好\正确的方法来清除商店上的过滤器?
最佳答案
当您使用 clearFilter()
时,使用 filterBy()
或 filter()
或过滤器并没有什么区别在商店配置。
清除过滤器后会发生以下情况:
- 清除商店中的过滤器集合
- 过滤后的数据被存储在快照中的原始(未过滤)数据替换
- 商店触发“datachanged”和“refresh”事件
请注意,您可以使用 clearFilter(true)
抑制要触发的事件,如果您想在清除现有过滤器后再次过滤商店,这可能会很有用。
如果清除商店的过滤器执行缓慢,则可能与第 3 步触发的布局过程(在您的网格或您使用商店的任何东西上)有关。
另请参阅 docs或 source code .
关于javascript - 使用 filterBy() 应用过滤器时从 ExtJs 存储中清除过滤器的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19767817/