ExtJS 7.6本地Store的filterBy方法使用:远程过滤转本地实现
ExtJS本地filterBy替换远程filter实现方案
针对你原来的远程过滤逻辑(匹配number或description字段包含输入值的记录),可以用本地filterBy方法这样实现:
const serviceStore = application.getStore('ServiceStore'); const filterValue = value.trim().toLowerCase(); // 先清除之前的过滤规则,避免叠加 serviceStore.clearFilter(); if (filterValue) { serviceStore.filterBy(function(record) { // 获取记录的两个字段值,转小写后处理空值 const recordNumber = (record.get('number') || '').toLowerCase(); const recordDesc = (record.get('description') || '').toLowerCase(); // 只要任一字段包含过滤值,就保留这条记录 return recordNumber.includes(filterValue) || recordDesc.includes(filterValue); }); }
关键说明:
filterBy的核心是一个回调函数,每条记录都会执行这个函数,返回true则保留,false则过滤- 统一转小写是为了模拟SQL LIKE的不区分大小写匹配,如果业务需要区分大小写,去掉所有
.toLowerCase()即可 - 用
includes()对应远程过滤中LIKE '%value%'的模糊匹配逻辑 - 先调用
clearFilter()是为了避免多次过滤后规则叠加,确保每次过滤都是基于原始数据 - 处理字段为空的情况(
|| ''),防止null/undefined调用toLowerCase()报错
内容的提问来源于stack exchange,提问作者Tech-Maou
相关产品推荐
相关产品推荐

