您好,登錄后才能下訂單哦!
后臺管理系統中的列表頁面,一般都會有對列表數據進行批量操作的功能,例如:批量刪除、批量刪除等。
之前項目中只是簡單的用到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 } }
實現的表格:
走了不少彎路才注意到的問題:
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。