You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:30:42