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