vue + element 实现 filter对表格数据进行过滤

1.首先定义 一个搜索框

    <el-input class="childTable-input" v-model="queryKeyCode" :placeholder="$t('refersetting.Options')" clearable maxlength="2000" />

2.在 data中 声明 v-model 绑定的全局变量

 data() {
    return {
      btnKeyCode: '', // 中转搜索框(右侧子表)的值  (我的需求是要在点击 搜索按钮后才进行过滤)
      queryKeyCode: '', // 搜索框(右侧子表)的值
      }
},

3.定义 watch 实现 queryKeyCode和搜索框的双向绑定
watch: {
queryKeyCode(val) {
this.queryKeyCode = val
}
},
4. 将实时更新的queryKeyCode的值 赋给 btnKeyCode变量 绑在按钮上

 <el-button class="childTable-queryBtn"  type="primary" icon="el-icon-search" :disabled="!useButton" @click="btnKeyCode = queryKeyCode">搜索</el-button>

5.计算数组,监听el-table的data

// 这是 el-table
<el-table :data="table" border highlight-current-row max-height="560"  v-loading="TableLoading">
...
</el-table>

// 计算el-table的data,将btnKeyCode变量作为过滤器条件,来返回数据
  computed: {
    // 模糊搜索右侧子表名称筛选
    table() {
      const search = this.btnKeyCode.trim()
      if (search) {
        return this.childData.filter(data => {
          return data.eva_item_display.indexOf(search) > -1
        })
      }
      return this.childData // chilData 就是之前el-table 的 data数据
    }
  },
  1. 效果如下
  • 搜索前
    在这里插入图片描述
  • 输入搜索关键字
    *
  • 点击搜索按钮后
    在这里插入图片描述
  • 取消搜索关键字

在这里插入图片描述
在这里插入图片描述

  • 在无搜索关键字时,点击搜索按钮后
    在这里插入图片描述
    就这样就实现前端 Vue 搜索框 动态过滤表格数据了,如果想是实现表格数据过滤在搜索框输入值时就动态过滤,可以查看我另一篇文章vue el-tree 组件过滤树数据
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用element-ui的el-table组件和el-input组件来实现表格搜索框。具体实现步骤如下: 1. 在el-table中添加一个slot="header"的template,用于放置搜索框。 2. 在template中添加一个el-input组件,用于输入搜索关键字。 3. 在el-table的data属性中添加一个filterText属性,用于存储搜索关键字。 4. 在el-table的computed属性中添加一个filteredData属性,用于根据搜索关键字过滤数据。 5. 在el-input的v-model属性中绑定filterText,实现搜索框与数据的双向绑定。 示例代码如下: ``` <template> <div> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> <template slot="header"> <el-input v-model="filterText" placeholder="请输入搜索关键字"></el-input> </template> </el-table> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, address: '北京市' }, { name: '李四', age: 20, address: '上海市' }, { name: '王五', age: 22, address: '广州市' }, { name: '赵六', age: 24, address: '深圳市' } ], filterText: '' } }, computed: { filteredData() { return this.tableData.filter(item => { return item.name.toLowerCase().includes(this.filterText.toLowerCase()) || item.address.toLowerCase().includes(this.filterText.toLowerCase()) }) } } } </script> <style> </style> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值