ui table组件的筛选功能的一个小坑

使用element-ui table组件的筛选功能的一个小坑

使用自定义模板和筛选功能,一开始的代码

<el-table-column v-if="key==='isShow'" label="是否在发现页展示" :filters="[{text:'已展示',value: true},{text: '未展示', value: false}]" :filter-method="filterShow"> <template slot-scope="scope"> <el-tag type="success" v-if="scope.row.isShow">显示</el-tag> <el-tag type="danger" v-else>不显示</el-tag> </template> </el-table-column> <el-table-column v-else-if="key==='isHandle'" label="是否已经审核" :filters="[{text:'已处理',value: true},{text: '未处理', value: false}]" :filter-method="filterHandle"> <template slot-scope="scope"> <el-tag type="info" v-if="scope.row.isHandle">已处理</el-tag> <el-tag type="warning" v-else>未处理</el-tag> </template> </el-table-column>

然后发现筛选功能怎么都不能实现,上网查找原因才发现,虽然官网在写自定义模板的示例代码时是这样的:

<template> <el-table :data="tableData"> <el-table-column label="日期"> <template slot-scope="scope"> <i></i> <span>{{ scope.row.date }}</span> </template> </el-table-column> <el-table-column label="姓名"> <template slot-scope="scope"> <el-popover trigger="hover" placement="top"> <p>姓名: {{ scope.row.name }}</p> <p>住址: {{ scope.row.address }}</p> <div slot="reference"> <el-tag size="medium">{{ scope.row.name }}</el-tag> </div> </el-popover> </template> </el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄' }] } }, methods: { handleEdit(index, row) { console.log(index, row); }, handleDelete(index, row) { console.log(index, row); } } } </script>

就是使用scope代替了prop,就是没有加上prop。

这就是坑所在地方,element的内部使用筛选功能时应该是使用到了prop,所以加上prop之后筛选功能就可以用了:

<el-table-column v-if="key==='isShow'" label="是否在发现页展示" prop="isShow" :filters="[{text:'已展示',value: true},{text: '未展示', value: false}]" :filter-method="filterShow"> <template slot-scope="scope"> <el-tag type="success" v-if="scope.row.isShow">显示</el-tag> <el-tag type="danger" v-else>不显示</el-tag> </template> </el-table-column> <el-table-column v-else-if="key==='isHandle'" label="是否已经审核" prop="isHandle" :filters="[{text:'已处理',value: true},{text: '未处理', value: false}]" :filter-method="filterHandle"> <template slot-scope="scope"> <el-tag type="info" v-if="scope.row.isHandle">已处理</el-tag> <el-tag type="warning" v-else>未处理</el-tag> </template> </el-table-column>

使用elementUi 的table组件的筛选功能记得加prop!!!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/9149441613c4fbe243749c1fa0a39943.html