更新日志

数据变化(基础虚拟,不解决列多情况)

建议开启使用:show-body-overflow 和 show-header-overflow

(注:启用纵向虚拟滚的后不支持动态行高,如果要支持动态行高,将虚拟滚动关闭即可)。

(注:数据变化默认会滚动到顶部,你可以关闭data-changes-scroll-top就不会滚动到顶部啦!)

(注:当`u-table`元素中注入`data`对象数组后,大量数据不建议使用双向绑定的 data 属性(vue 监听大数据会短暂的卡顿),建议使用 reloadData 函数,请看表格方法)。

(注: 监听表格滚动到了底部? 你可以绑定table-body-scroll事件, 第四个参数可以判断是否到底部了哦!

  <template>
   <div>
      <p style="margin: 20px 0;">
           <el-button @click="setData(3)">变化数据为3条</el-button>
           <el-button @click="setData(2000)">变化数据为2000条</el-button>
           <el-button @click="setData(5000)">变化数据为5000条</el-button>
           <el-radio-group v-model="radio" style="margin-left:30px">
              <el-radio :label="1">数据变化滚动到顶部</el-radio>
              <el-radio :label="2">数据变化滚动不滚动到顶部</el-radio>
            </el-radio-group>
      </p>
     <u-table
          ref="plTable"
          :max-height="height"
          use-virtual
          @table-body-scroll="tableScroll"
          :data-changes-scroll-top="radio === 1"
          :row-height="rowHeight"
          border>
          <u-table-column type="index" width="100" fixed/>
          <u-table-column
             v-for="item in columns"
             :key="item.id"
             :resizable="item.resizable"
             :show-overflow-tooltip="item.showOverflow"
             :prop="item.prop"
             :label="item.label"
             :fixed="item.fixed"
             :width="item.width"/>
        </u-table>
    </div>
 </template>

  <script>
    export default {
      data() {
        return {
          radio: 1,
          height: 400,
          rowHeight: 50,
          columns: Array.from({ length: 10 }, (_, idx) => ({
              prop: 'address', id: idx, label: '地址' + idx, width: 200, showOverflow: true
          })),
        }
      },
      mounted () {
        this.setData(500)
      },
      methods: {
          setData (num) {
            let data = Array.from({ length: num }, (_, idx) => ({
                id: idx + 1,
                date: '2016-05-03',
                name: 1,
                ab: '欢迎使用u-table',
                address: 1 + idx
            }))
            this.$refs.plTable.reloadData(data)
          },
           tableScroll ({scrollTop, scrollLeft, table, judgeFlse}) {
              // {scrollTop, scrollLeft, table, judgeFlse: 这个参数返回一个boolean值,为true则代表表格滚动到了底部了,false没有滚动到底部,必须开起大数据渲染模式才能有值哦}, event
              console.log(scrollTop, scrollLeft, table, judgeFlse)
            }
      }
    }
  </script>