十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
后台管理系统中的列表页面,一般都会有对列表数据进行批量操作的功能,例如:批量删除、批量删除等。
创新互联建站从2013年开始,先为曲阜等服务建站,曲阜等地企业,进行企业商务咨询服务。为曲阜企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
之前项目中只是简单的用到Element框架中常规的属性、事件。在一次机缘巧合下,了解到一个公司内部的框架是基于Element框架内部实现了一些插件功能,对于表格这一块完善了很多功能,当时没有把握住机会去看源码是怎么实现的,现在有点小后悔呢,嘤嘤嘤~~~~没关系,自己慢慢一点一点实现。
实现的功能有:
1、分页数据选择
一开始以为不就是分页的时候把之前选中的数据存储在一个list里面嘛,然后选择的时候map一下。等到自己写代码的时候,会发现没有那么简单,百度后,发现有两个属性被忽视了
.png)

代码截图:

事件代码:
getRowKeys (row) {
return row.execId
}这样通过 selectionChange 方法就能获取页面中选中数据的改变,将选中的数据保存到list中
selectionChange (rows) {
this.checkList = rows
}2、全选所有数据
element框架中有select-all事件,全选本页所有数据,但是项目中,经常会遇到说对所有的进行操作,例如批量删除(删除所有数据,这个权限有点大)
实现思路:
全选所有
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
}
}实现的表格:

走了不少弯路才注意到的问题:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对创新互联的支持。