后臺管理系統(tǒng)中的列表頁面,一般都會有對列表數(shù)據(jù)進(jìn)行批量操作的功能,例如:批量刪除、批量刪除等。
創(chuàng)新互聯(lián)建站從2013年開始,先為曲阜等服務(wù)建站,曲阜等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為曲阜企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
之前項(xiàng)目中只是簡單的用到Element框架中常規(guī)的屬性、事件。在一次機(jī)緣巧合下,了解到一個(gè)公司內(nèi)部的框架是基于Element框架內(nèi)部實(shí)現(xiàn)了一些插件功能,對于表格這一塊完善了很多功能,當(dāng)時(shí)沒有把握住機(jī)會去看源碼是怎么實(shí)現(xiàn)的,現(xiàn)在有點(diǎn)小后悔呢,嚶嚶嚶~~~~沒關(guān)系,自己慢慢一點(diǎn)一點(diǎn)實(shí)現(xiàn)。
實(shí)現(xiàn)的功能有:
1、分頁數(shù)據(jù)選擇
一開始以為不就是分頁的時(shí)候把之前選中的數(shù)據(jù)存儲在一個(gè)list里面嘛,然后選擇的時(shí)候map一下。等到自己寫代碼的時(shí)候,會發(fā)現(xiàn)沒有那么簡單,百度后,發(fā)現(xiàn)有兩個(gè)屬性被忽視了
代碼截圖:
事件代碼:
getRowKeys (row) { return row.execId }
這樣通過 selectionChange 方法就能獲取頁面中選中數(shù)據(jù)的改變,將選中的數(shù)據(jù)保存到list中
selectionChange (rows) { this.checkList = rows }
2、全選所有數(shù)據(jù)
element框架中有select-all事件,全選本頁所有數(shù)據(jù),但是項(xiàng)目中,經(jīng)常會遇到說對所有的進(jìn)行操作,例如批量刪除(刪除所有數(shù)據(jù),這個(gè)權(quán)限有點(diǎn)大)
實(shí)現(xiàn)思路:
全選所有
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 } }
實(shí)現(xiàn)的表格:
走了不少彎路才注意到的問題:
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對創(chuàng)新互聯(lián)的支持。