如何取消Ag-grid的OnFilterChanged事件并阻止数据重新加载?
取消
onFilterChanged()/OnFilterModified()事件避免数据重加载的解决方法 - 方案1:终止事件默认行为
多数带该事件的表格组件(比如AG Grid等)的回调参数都支持终止默认逻辑,直接在回调内调用事件的阻止默认方法、或返回false即可拦截后续自动加载逻辑:
function onFilterChanged(event) { // 符合不需要加载的条件时执行以下语句 event.preventDefault?.(); return false; }
- 方案2:新增加载状态开关控制
如果组件不支持直接终止事件,可新增自定义控制变量拦截加载逻辑:
// 全局/组件内定义加载开关,默认允许过滤触发加载 let enableFilterReload = true; function onFilterChanged() { if (!enableFilterReload) return; // 原有数据请求逻辑放在此处 } // 手动修改过滤器、不需要触发加载时的写法 enableFilterReload = false; // 此处执行修改过滤器模型的同步操作 enableFilterReload = true;
注意:开关的关闭、开启操作要和过滤器修改逻辑保持同步,避免异步操作导致状态判断出错
- 方案3:接管过滤事件逻辑
如果上述方案都不生效,可直接移除组件对该事件的默认绑定,完全自定义onFilterChanged的执行逻辑,不需要触发加载时直接跳过对应代码段即可。
内容的提问来源于stack exchange,提问作者Shravan Kulkarni
相关产品推荐
相关产品推荐

