后臺管理系統中的列表頁面,一般都會有對列表數據進行批量操作的功能,例如:批量刪除、批量刪除等。
之前項目中只是簡單的用到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 }}
實現的表格:
走了不少彎路才注意到的問題:
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。
新聞熱點
疑難解答