艺术家杨帆离世,好吃网,百得佳士
后台管理系统中的列表页面,一般都会有对列表数据进行批量操作的功能,例如:批量删除、批量删除等。
之前项目中只是简单的用到element框架中常规的属性、事件。在一次机缘巧合下,了解到一个公司内部的框架是基于element框架内部实现了一些插件功能,对于表格这一块完善了很多功能,当时没有把握住机会去看源码是怎么实现的,现在有点小后悔呢,嘤嘤嘤~~~~没关系,自己慢慢一点一点实现。
实现的功能有:
1、分页数据选择
一开始以为不就是分页的时候把之前选中的数据存储在一个list里面嘛,然后选择的时候map一下。等到自己写代码的时候,会发现没有那么简单,百度后,发现有两个属性被忽视了
代码截图:
事件代码:
getrowkeys (row) { return row.execid }
这样通过 selectionchange 方法就能获取页面中选中数据的改变,将选中的数据保存到list中
selectionchange (rows) { this.checklist = rows }
2、全选所有数据
element框架中有select-all事件,全选本页所有数据,但是项目中,经常会遇到说对所有的进行操作,例如批量删除(删除所有数据,这个权限有点大)
实现思路:
<el-checkbox v-model="allcheck" @change="allcheckevent">全选所有</el-checkbox>
allcheckevent () { if (this.allcheck) { this.testlist.foreach(row => { this.$refs.recordtable.togglerowselection(row, true) }) } else { this.$refs.recordtable.clearselection() } }
watch: { testlist: { handler (value) { if (this.allcheck) { let that = this let len = that.checklist.length value.foreach(row => { for (let i = 0; i < len; i++) { if (row.execid === that.checklist[i].execid) { that.$refs.recordtable.togglerowselection(row, false) break } else { that.$refs.recordtable.togglerowselection(row, true) } } }) } }, deep: true } }
selectone () { if (this.allcheck) { this.allcheck = false } }
实现的表格:
走了不少弯路才注意到的问题:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
vue 路由懒加载中给 Webpack Chunks 命名的方法
网友评论