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

如何在v-client-table中获取列搜索框输入文本以实现自定义列过滤?

你可以通过v-client-table自带的customFilter配置直接获取Name列搜索框的输入值,全程不需要修改或替换原生列搜索框,实现逻辑如下:
customFilter回调默认传入两个参数:当前遍历的行数据、全局查询对象,其中query.filters.name就是Name列过滤器的用户输入值,直接调用即可实现自定义过滤逻辑。

完整实现代码

模板部分

<!-- 给表格组件绑定ref,方便后续有额外需求时调用内部属性 -->
<v-client-table 
  :columns="columns" 
  :data="tableData" 
  :options="tableOptions"
  ref="clientTable"
></v-client-table>

配置部分

data() {
  return {
    tableData: [/* 你的表格数据 */],
    columns: ['name', 'manufacturer', 'birth_date', 'age'],
    tableOptions: {
      dateColumns: ['birth_date'],
      filterable: ['name','manufacturer', 'birth_date'],  
      headings: {
        name: 'Name',
        birth_date: 'Birth Date',
        age: 'Age',
      },
      // 新增自定义过滤逻辑
      customFilter: (row, query) => {
        // 获取Name列搜索框输入值,无输入时默认为空字符串
        const nameInput = query.filters.name || ''
        // 无输入时不过滤,直接返回true
        if (!nameInput.trim()) return true
        // 此处替换为你自己的自定义过滤逻辑,示例为忽略大小写的模糊匹配
        return row.name.toLowerCase().includes(nameInput.toLowerCase().trim())
      }
    }
  }
}

额外需求适配

如果需要在过滤逻辑之外单独监听Name列的输入值变化,可以通过watch监听ref绑定的表格实例属性:

watch: {
  '$refs.clientTable.query.filters.name'(newVal) {
    // 输入值变化时触发你需要的其他逻辑
    console.log('Name列当前输入值:', newVal)
  }
}

内容的提问来源于stack exchange,提问作者Nanda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:36:03