詳解element-ui表格中勾選checkbox,高亮當(dāng)前行
我們在做后臺管理系統(tǒng)的時候經(jīng)常需要操作表格,這里我們要實現(xiàn)的一個功能就是,勾選復(fù)選框,高亮顯示當(dāng)前行,也就是當(dāng)前行樣式改變。這是一個非常常見的使用場景,官網(wǎng)給我們提供了一個帶Checkbox的table表格,但是并沒有給出上述使用案例,解決辦法有很多,我簡單總結(jié)下我自己的實現(xiàn)過程,希望能幫助到有同樣需求的小伙伴。
勾選表格中當(dāng)前項時會觸發(fā)selection-change事件,在<el-table>中綁定handleSelectionChange方法。
<el-table @selection-change="handleSelectionChange" >
編寫handleSelectionChange方法,實現(xiàn)思路就是根據(jù)勾選當(dāng)前行的下標(biāo),改變當(dāng)前樣式。但是element table表格中沒有獲取勾選后當(dāng)前行index的方法,這里主要通過兩個forEach遍歷實現(xiàn)。
在data中定義tableData的時候一定要設(shè)置id屬性,因為這里我們是通過id的對比來獲取當(dāng)前行的下標(biāo)。
tableData: [{ id:0, date: '2016-05-03', name: '王小虎', address: '上海市普陀區(qū)金沙江路 1518 弄' }
下列方法打印出來的i就是你要獲取的勾選行的索引值,我們在data中定義一個空數(shù)組,專門用來存儲選中項的下標(biāo),方便使用。
handleSelectionChange(val) { var arr = []; val.forEach((val, index) => { this.tableData.forEach((v, i) => { // id 是每一行的數(shù)據(jù)id if(val.id == v.id){ // console.log(i); arr.push(i) } }) }) this.multipleSelection = arr; }
獲取到下標(biāo)之后就需要改變樣式,給<el-table>標(biāo)簽綁定修改當(dāng)前行樣式的方法rowStyle
<el-table @selection-change="handleSelectionChange" :row-class-name="rowStyle" >
編寫rowStyle方法,思路是循環(huán)便利multipleSelection數(shù)組,取出存儲的下標(biāo),與當(dāng)前行下標(biāo)做對比,如果相同則返回rowStyle,改變當(dāng)前行的樣式。
這里需要注意一個問題:
forEach中return無效!我們希望達(dá)到某一條件時,跳出循環(huán),代碼終止,使用forEach進(jìn)行遍歷是無法實現(xiàn)的。
原因:forEach()無法在所有元素都傳遞給調(diào)用的函數(shù)之前終止遍歷!
this.multipleSelection.forEach((v)=>{ if(rowIndex === v){ return 'rowStyle' } })
解決方法:使用for替換forEach
rowStyle({row, rowIndex}){ let arr = this.multipleSelection; for(let i = 0; i < arr.length; i++){ if(rowIndex === arr[i]){ return 'rowStyle' } } }
在style中定義選中行的樣式
</style> .rowStyle{ background-color:red!important; } </style>
另外如果想更改鼠標(biāo)移入的hover樣式,要注意需要在td上修改,因為事件是添加在td身上的,在tr上修改無效。
.el-table{ width: 1163px; margin: 0 auto; .el-table__body{ tr:hover>td{ background-color:rgba(238,250,249,1)!important; } } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3中引入、封裝和使用svg矢量圖的實現(xiàn)示例
SVG全稱Scalable Vector Graphics,它是網(wǎng)絡(luò)上使用最廣泛的矢量圖格式,在項目開發(fā)過程中,我們經(jīng)常會用到svg矢量圖,而且我們使用svg以后,頁面上加載的不再是圖片資源,本文將給大家介紹Vue3中引入、封裝和使用svg矢量圖的實現(xiàn)示例,需要的朋友可以參考下2024-07-07vue2+elementUI實現(xiàn)下拉樹形多選框效果實例
這篇文章主要給大家介紹了關(guān)于vue2+elementUI實現(xiàn)下拉樹形多選框效果的相關(guān)資料,這是最近的工作中遇到的一個需求,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07解決vue router使用 history 模式刷新后404問題
這篇文章主要介紹了解決vue router使用 history 模式刷新后404問題,需要的朋友可以參考下2017-07-07