elementUI table 实现前端全局搜索

黄小嘻
2022-01-01 / 0 评论 / 63 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年03月17日,已超过62天没有更新,若内容或图片失效,请留言反馈。

ElementUI是饿了么前端开源的一个基于Vue的前端框架,已经帮我们封装好了一系列功能性的组件,比如栅格系统、表格、表单、树形菜单、通知等。对于后台管理界面的项目,特别是不需要考虑兼容ie8、ie9以下的项目、ElementUI是一个不错的选择。
而且ElementUI的文档写得十分详尽,参照demo可以很快上手。
但是使用 elementUI 的 table表格时有时候需要进行前端模糊搜索,所有我记录了一下自己实现前端搜索的基本思路。

1.绑定

<el-input v-model="searchData" placeholder="输入关键字搜索" clearable @keyup.enter.native="getDep" />

2.Input处理函数

getDep() {
    // 将筛选出的新数据赋值给table绑定值
    this.tableData = this.tableRes(this.teamSearch, this.tableBackupsData)
}

3.具体方法

// 筛选Table表格数据
tableRes(searchData, table, array) {
    // 为实现不区分大小写,所以之前需要toLowerCase()方法将key和查询到的所值变成小写。
    const search = searchData.toLowerCase()
    if (search) {
        // filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
        // 注意: filter() 不会对空数组进行检测。
        // 注意: filter() 不会改变原始数组。
        return table.filter(data => {
            // console.log('22',data)
            // some() 方法用于检测数组中的元素是否满足指定条件;
            // some() 方法会依次执行数组的每个元素:
            // 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测;
            // 如果没有满足条件的元素,则返回false。
            // 注意: some() 不会对空数组进行检测。
            // 注意: some() 不会改变原始数组。
            return Object.keys(data).some(key => {
                // indexOf() 返回某个指定的字符在某个字符串中首次出现的位置,如果没有找到就返回-1;
                // 该方法对大小写敏感!所以之前需要toLowerCase()方法将所有查询到内容变为小写。
                if (array) {
                    if (array.indexOf(key) == -1) {
                        // console.log('11',array.indexOf(key))
                        return String(data[key]).toLowerCase().indexOf(search) > -1
                    }
                } else {
                    return String(data[key]).toLowerCase().indexOf(search) > -1
                }
            })
        })
    }
    return table
}
1

评论 (0)

取消