詳解element-ui表格中勾選checkbox,高亮當(dāng)前行
我們在做后臺管理系統(tǒng)的時候經(jīng)常需要操作表格,這里我們要實(shí)現(xiàn)的一個功能就是,勾選復(fù)選框,高亮顯示當(dāng)前行,也就是當(dāng)前行樣式改變。這是一個非常常見的使用場景,官網(wǎng)給我們提供了一個帶Checkbox的table表格,但是并沒有給出上述使用案例,解決辦法有很多,我簡單總結(jié)下我自己的實(shí)現(xiàn)過程,希望能幫助到有同樣需求的小伙伴。

勾選表格中當(dāng)前項(xiàng)時會觸發(fā)selection-change事件,在<el-table>中綁定handleSelectionChange方法。
<el-table
@selection-change="handleSelectionChange"
>
編寫handleSelectionChange方法,實(shí)現(xiàn)思路就是根據(jù)勾選當(dāng)前行的下標(biāo),改變當(dāng)前樣式。但是element table表格中沒有獲取勾選后當(dāng)前行index的方法,這里主要通過兩個forEach遍歷實(shí)現(xiàn)。
在data中定義tableData的時候一定要設(shè)置id屬性,因?yàn)檫@里我們是通過id的對比來獲取當(dāng)前行的下標(biāo)。
tableData: [{
id:0,
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
}
下列方法打印出來的i就是你要獲取的勾選行的索引值,我們在data中定義一個空數(shù)組,專門用來存儲選中項(xiàng)的下標(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)行遍歷是無法實(shí)現(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上修改,因?yàn)槭录翘砑釉趖d身上的,在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)文章
vue實(shí)現(xiàn)條件判斷動態(tài)綁定樣式的方法
今天小編就為大家分享一篇vue實(shí)現(xiàn)條件判斷動態(tài)綁定樣式的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue中for循環(huán)更改數(shù)據(jù)的實(shí)例代碼(數(shù)據(jù)變化但頁面數(shù)據(jù)未變)
這篇文章主要介紹了vue中for循環(huán)更改數(shù)據(jù)的實(shí)例代碼(數(shù)據(jù)變化但頁面數(shù)據(jù)未變)的相關(guān)資料,需要的朋友可以參考下2017-09-09
詳解如何配置vue-cli3.0的vue.config.js
這篇文章主要介紹了詳解如何配置vue-cli3.0的vue.config.js,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
vue3響應(yīng)式轉(zhuǎn)換常用API操作示例代碼
在Vue 3中,響應(yīng)式系統(tǒng)得到了顯著改善,包括使用Composition API時更加靈活的狀態(tài)管理,這篇文章主要介紹了vue3響應(yīng)式轉(zhuǎn)換常用API操作示例代碼,需要的朋友可以參考下2024-08-08
el-tree使用獲取當(dāng)前選中節(jié)點(diǎn)的父節(jié)點(diǎn)數(shù)據(jù)
本文主要介紹了el-tree使用獲取當(dāng)前選中節(jié)點(diǎn)的父節(jié)點(diǎn)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
vue中利用Promise封裝jsonp并調(diào)取數(shù)據(jù)
Promise就是一個給一步操作提供的容器,在這個容器里,有兩個階段無法改變的階段,這兩個階段在文中給大家提到。對vue中利用Promise封裝jsonp并調(diào)取數(shù)據(jù) 的相關(guān)知識感興趣的朋友,跟隨小編一起看看吧2019-06-06
keep-Alive搭配vue-router實(shí)現(xiàn)緩存頁面效果的示例代碼
這篇文章主要介紹了keep-Alive搭配vue-router實(shí)現(xiàn)緩存頁面效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Vue使用localStorage存儲數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了Vue使用localStorage存儲數(shù)據(jù)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05

