美文网首页
el-table spanMethod 合并行或者列的源码查看

el-table spanMethod 合并行或者列的源码查看

作者: jeneen1129 | 来源:发表于2023-09-12 14:57 被阅读0次

    使用说明

    element-ui使用手册-table

    // 官方例子
    <template>
      <div>
        <el-table
          :data="tableData"
          :span-method="arraySpanMethod"
          border
          style="width: 100%">
          <el-table-column
            prop="id"
            label="ID"
            width="180">
          </el-table-column>
          <el-table-column
            prop="name"
            label="姓名">
          </el-table-column>
          <el-table-column
            prop="amount1"
            sortable
            label="数值 1">
          </el-table-column>
          <el-table-column
            prop="amount2"
            sortable
            label="数值 2">
          </el-table-column>
          <el-table-column
            prop="amount3"
            sortable
            label="数值 3">
          </el-table-column>
        </el-table>
    
        <el-table
          :data="tableData"
          :span-method="objectSpanMethod"
          border
          style="width: 100%; margin-top: 20px">
          <el-table-column
            prop="id"
            label="ID"
            width="180">
          </el-table-column>
          <el-table-column
            prop="name"
            label="姓名">
          </el-table-column>
          <el-table-column
            prop="amount1"
            label="数值 1(元)">
          </el-table-column>
          <el-table-column
            prop="amount2"
            label="数值 2(元)">
          </el-table-column>
          <el-table-column
            prop="amount3"
            label="数值 3(元)">
          </el-table-column>
        </el-table>
      </div>
    </template>
    
    <script>
      export default {
        data() {
          return {
            tableData: [{
              id: '12987122',
              name: '王小虎',
              amount1: '234',
              amount2: '3.2',
              amount3: 10
            }, {
              id: '12987123',
              name: '王小虎',
              amount1: '165',
              amount2: '4.43',
              amount3: 12
            }, {
              id: '12987124',
              name: '王小虎',
              amount1: '324',
              amount2: '1.9',
              amount3: 9
            }, {
              id: '12987125',
              name: '王小虎',
              amount1: '621',
              amount2: '2.2',
              amount3: 17
            }, {
              id: '12987126',
              name: '王小虎',
              amount1: '539',
              amount2: '4.1',
              amount3: 15
            }]
          };
        },
        methods: {
          arraySpanMethod({ row, column, rowIndex, columnIndex }) {
            if (rowIndex % 2 === 0) {
              if (columnIndex === 0) {
                return [1, 2];
              } else if (columnIndex === 1) {
                return [0, 0];
              }
            }
          },
    
          objectSpanMethod({ row, column, rowIndex, columnIndex }) {
            if (columnIndex === 0) {
              if (rowIndex % 2 === 0) {
                return {
                  rowspan: 2,
                  colspan: 1
                };
              } else {
                return {
                  rowspan: 0,
                  colspan: 0
                };
              }
            }
          }
        }
      };
    </script>
    

    源码查看

    直接到 node_modules 下面找到 element-ui/packages/table/src/table.vue
    直接搜索 spanMethod


    经过查找,在 table-body.js 中找到,使用了 spanMethod



    可以看到是直接作用在 tdcolspanrowspan

    实践问题

    td rowspan='0' 时内容会占用发生错行

    查看 el-table 生成之后的 dom, 可以看到,如果 rowspan0td 就没有渲染

    相关文章

      网友评论

          本文标题:el-table spanMethod 合并行或者列的源码查看

          本文链接:https://www.haomeiwen.com/subject/rhxuvdtx.html