vue中使用element table,動態(tài)列渲染異常(錯行問題、數(shù)據(jù)不更新),已解決

說明

1、el-table-column 動態(tài)渲染
2、粘貼element的源碼,一試發(fā)現(xiàn)沒有問題,對比我自己代碼,添加上height="500",再添加動態(tài)列,高度異常


高度渲染異常

3、解決辦法,刷新組件,調用doLayout對table進行重新繪制(ps:不加nextTick可能會無效呦)

this.$nextTick(() => {
  this.$refs.singleTable.doLayout()
})

4、可歌可泣,終于擺脫了以前 用v-if強制刷新表格的情況,接下來我碰到的問題是 列的數(shù)據(jù)改了,但是table不更新


修改列數(shù)據(jù)

5、對比網(wǎng)上查詢和大佬說的話 是需要加key的,所以我嘗試修改key,最后成功了(開心~~~)

v-for="(tableHeaderItem,tableHeaderIndex) in allData.tableHeader"
:key="tableHeaderIndex+Math.random()"

demo

<template>
  <div>
    <el-table
      ref="singleTable"
      :data="tableData"
      highlight-current-row
      style="width: 100%"
      height="500"
      class="table-fixed"
    >
      <el-table-column
        fixed="left"
        label="規(guī)培護士"
        min-width="120"
        align="center"
      >
        <template slot-scope="scope">
          {{ scope.row.name }}
        </template>
      </el-table-column>
      <el-table-column
        v-for="(item,i) in obj.header"
        :key="i"
        property="date"
        label="日期"
        min-width="300"
      />
      <el-table-column
        property="address"
        label="地址"
        fixed="right"
      />
    </el-table>
    <div style="margin-top: 20px">
      <el-button @click="handlerAddCol">
        新增一列
      </el-button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [{
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀區(qū)金沙江路 1518 弄'
      }, {
        date: '2016-05-04',
        name: '王小虎',
        address: '上海市普陀區(qū)金沙江路 1517 弄'
      }, {
        date: '2016-05-01',
        name: '王小虎',
        address: '上海市普陀區(qū)金沙江路 1519 弄'
      }, {
        date: '2016-05-03',
        name: '王小虎',
        address: '上海市普陀區(qū)金沙江路 1516 弄'
      }],
      obj: {
        header: [
          {
            startAt: '1'
          },
          {
            startAt: '1'
          },
          {
            startAt: '1'
          },
          {
            startAt: '1'
          },
          {
            startAt: '1'
          },
          {
            startAt: '1'
          },
          {
            startAt: '1'
          },
          {
            startAt: '1'
          }
        ]
      },
      submitLoading: false
    }
  },
  methods: {
    handlerAddCol() {
      this.obj.header.push({})
      this.$nextTick(() => {
        this.$refs.singleTable.doLayout()
      })
    }

  }
}
</script>



?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容