Element Table 增加搜索功能
- 2020 年 2 月 25 日
- 筆記
我们经常会用到搜索,可以使用计算属性:
<!-- 表格搜索框 --> <el-input v-model="searchContent" placeholder="搜索1" size="medium" style="width:200px;float:right;margin-bottom:10px;" ></el-input>
<el-table :data="filterData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"></el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table>
//搜索数据 computed: { filterData: function() { var input = this.searchContent && this.searchContent.toLowerCase(); var items = this.tableData; var items1; if (input) { items1 = items.filter(function(item) { return Object.keys(item).some(function(key1) { return String(item[key1]) .toLowerCase() .match(input); }); }); } else { items1 = items; } return items1; } }
但是如果有多个table都要搜索,最好使用方法,因为可以传参数(tableData 表格数据;searchContent:输入框内容)
<el-table :data="filterData2(tableData,searchContent)" style="width: 100%" v-if="isShowTable2"> <el-table-column prop="date" label="日期" width="180"></el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table>
filterData2(data,searchContent) { //var input = this.searchContent && this.searchContent.toLowerCase(); var input = searchContent.toLowerCase() var items = data; var items1; if (input) { items1 = items.filter(function(item) { return Object.keys(item).some(function(key1) { return String(item[key1]) .toLowerCase() .match(input); }); }); } else { items1 = items; } return items1; },
总结:单个表格搜索可以使用计算属性,多个表格通过调用同一个过滤函数,这样避免代码冗余。