elementui table中 tableRowClassName 不生效

场景:给列表数据中,每行根据不同状态显示不同颜色。

官方教程使用table组件中的tableRowClassName属性

<template>
  <el-table
    :data="tableData"
    style=" 100%"
    :row-class-name="tableRowClassName">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>
  </el-table>
</template>

<style>
  .el-table .warning-row {
    background: oldlace;
  }

  .el-table .success-row {
    background: #f0f9eb;
  }
</style>

<script>
  export default {
    methods: {
      tableRowClassName({row, rowIndex}) {
        if (rowIndex === 1) {
          return 'warning-row';
        } else if (rowIndex === 3) {
          return 'success-row';
        }
        return '';
      }
    },
    data() {
      return {
        tableData: [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄',
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄',
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }]
      }
    }
  }
</script>

在测试过程中,此方法没有生效,百度了解到,需要使用全局属性

在elementUI中,row-class-name、row-style、cell-class-name等属性要想生效必须使用全局class才能生效。因为之前的代码都是在组件中编写的,所以去除<style scoped></style>中的scoped即可该组件中的样式变为全局属性。
试了下果然有效。

但是去掉scoped的话,scoped控制局部显示样式的,去掉的话,可能会与其他的页面有重复。

在不去掉scoped的情况,可以选择通过引用的方式。

单独写个css文件,写入样式

.el-table .warning-row {
    background-color: oldlace;
}

.el-table .success-row {
    background-color: #f0f9eb;
}   

通过引用的方式可达到全局的效果:

<style scoped>
@import "../../styles/table_style.css";
.input {
   170px;
  margin-left: 10px;
}
.btn {
  display: flex;
  margin-top: 10px;
  margin-left: 10px;
}
.tab {
  margin-top: 10px;
  margin-left: 20px;
}

</style>
原文地址:https://www.cnblogs.com/TestingShare/p/14863463.html