後臺管理系統中的列表頁面,通常都會有對列表數據進行批量操做的功能,例如:批量刪除、批量刪除等。
以前項目中只是簡單的用到Element框架中常規的屬性、事件。在一次機緣巧合下,瞭解到一個公司內部的框架是基於Element框架內部實現了一些插件功能,對於表格這一塊完善了不少功能,當時沒有把握住機會去看源碼是怎麼實現的,如今有點小後悔呢,嚶嚶嚶~~~~不要緊,本身慢慢一點一點實現。前端
事件代碼:bash
getRowKeys (row) {
return row.execId
}複製代碼
這樣經過selectionChange方法就能獲取頁面中選中數據的改變,將選中的數據保存到list中框架
selectionChange (rows) {
this.checkList = rows
}複製代碼
二、全選全部數據ui
element框架中有select-all事件,全選本頁全部數據,可是項目中,常常會遇到說對全部的進行操做,例如批量刪除(刪除全部數據,這個權限有點大)
實現思路:
this
<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
}
}複製代碼
實現的表格:spa
走了很多彎路才注意到的問題:插件