欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

el-table 动态修改高度, 封装mixins

程序员文章站 2022-06-17 15:00:40
...

mixins如下,通过监听页面的resize事件,当页面视窗大小变化的时候,
动态将当前视窗高度减去固定的高度值,使得table能够动态滑动。

export default (config) => {
  const {
    subtractHeight = 250,
  } = config;
  return {
    data() {
      return {
        subtractHeight,
        // 列表高度
        tableHeight: `${document.body.clientHeight - this.subtractHeight}px`,
      };
    },
    created() {
      window.addEventListener('resize', this.getHeight);
      // 监听事件注销,防止内存溢出
      this.$once('hook:beforeDestory', () => {
        window.removeEventListener('resize', this.getHeight);
      });
    },
    mounted() {
      this.getHeight();
    },
    watch: {
      subtractHeight: {
        handler() {
          this.getHeight();
        },
      },
    },
    methods: {
      /**
       * @todo 获取列表高度
       */
      getHeight() {
        this.tableHeight = `${document.body.clientHeight - this.subtractHeight}px`;
      },
    },
  };
};

vue组件中使用方式为

<a-table
      id="aTable"
      v-loading="tableLoad"
      :height="tableHeight"
      :columns="columns"
      :row-class-name="tableRowClassName"
      :data="list"
      @cell-dblclick="dblclick"
      @row-contextmenu="rightClick"
    >
.....

import Heightmixin from '@/mixins/tableHeight-mixin';

const initalSubsubtractHeight = 570;
const heights = new Heightmixin({
  subtractHeight: initalSubsubtractHeight,
});
export default {
  	mixins: [heights],
	// 涉及到搜索列表的展开和折叠,可能需要动态更改subtractHeight,此时可以进行方法传递。
	// 通过watch来进行table动态的更改。
	showFormFun() {
	  this.showForm = !this.showForm;
	  this.subtractHeight = this.showForm ? initalSubsubtractHeight : 232;
	},
}

总结:方法感觉还不是特别完善,已经算是满足要求了,应该还有好多可以抽离成mixin的方法,
动态监听表格高度只是其一,欢迎大家指教。

相关标签: vue javascript