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
}
评论区