最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解element-ui表格中勾選checkbox,高亮當(dāng)前行

 更新時(shí)間:2019年09月02日 10:24:49   作者:視覺派Pie  
這篇文章主要介紹了詳解element-ui表格中勾選checkbox,高亮當(dāng)前行,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

勾選表格中當(dāng)前項(xiàng)時(shí)會(huì)觸發(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的方法,這里主要通過兩個(gè)forEach遍歷實(shí)現(xiàn)。

在data中定義tableData的時(shí)候一定要設(shè)置id屬性,因?yàn)檫@里我們是通過id的對(duì)比來獲取當(dāng)前行的下標(biāo)。

    tableData: [{
     id:0,
     date: '2016-05-03',
     name: '王小虎',
     address: '上海市普陀區(qū)金沙江路 1518 弄'
    }

下列方法打印出來的i就是你要獲取的勾選行的索引值,我們在data中定義一個(gè)空數(shù)組,專門用來存儲(chǔ)選中項(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ù)組,取出存儲(chǔ)的下標(biāo),與當(dāng)前行下標(biāo)做對(duì)比,如果相同則返回rowStyle,改變當(dāng)前行的樣式。

這里需要注意一個(gè)問題:

forEach中return無效!我們希望達(dá)到某一條件時(shí),跳出循環(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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

临海市| 大丰市| 大渡口区| 皮山县| 横峰县| 蒲江县| 噶尔县| 西乡县| 黄山市| 湟源县| 广水市| 桃园市| 弥渡县| 大田县| 阿克陶县| 广州市| 报价| 天峨县| 台东县| 房产| 抚顺市| 荥经县| 建湖县| 龙川县| 清河县| 瑞金市| 南涧| 长岭县| 巩义市| 忻城县| 八宿县| 轮台县| 家居| 怀柔区| 晋州市| 石景山区| 固安县| 卓资县| 宁蒗| 宜川县| 广元市|