Elment ui 表单上滑 加载更多数据方法

 方法记录 方便以后使用

方法一:

 <template>
   <div>
    <el-table
      :data="tableData"
      height="calc(100vh - 300px)"
      ref="table"
      :show-header="false">
      <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>
  </div>
</template>
<script>

export default {
 data() {
    return {
       tableData: []
    }
  },
  destroyed() {
    // 清空监听
    window.removeEventListener('scroll', this.handleScroll, true);
  },
  mounted() {
    this.$refs.table.bodyWrapper.addEventListener('scroll', this.handleScroll, true);
  },
  methods: {
    handleScroll(res) {
      // 监听滚动事件
      const height = res.target;
      const clientHeight = height.clientHeight; // 表格视窗高度 即wraper
      const scrollTop = height.scrollTop; // 表格内容已滚动的高度
      const scrollHeight = height.scrollHeight; // 表格内容撑起的高度
      if (clientHeight + scrollTop === scrollHeight) {
        if (this.isMoreLoad) {
          // 请求数据
          this.getData();
        }
      }
    },
  }
}
</script>

方法二: 推荐

当页面第一次tab页面切换时 mounted 拿不到表格dom时

调用addScrollEventListener() 添加滚动监听

离开时removeScrollEventListener() 移除监听

 data() {
    return {
        isMoreLoad: true,
        scrollEventListenerAdded: false,
    }
}, 
methods: {
    // 添加监听
    addScrollEventListener() {
      this.$nextTick(() => {
        if (!this.scrollEventListenerAdded) {
          document.querySelector('.el-table__body-wrapper').addEventListener('scroll', this.handleScroll, true);
          this.scrollEventListenerAdded = true; // 标记已添加监听器
        }
      });
    },

    // 移除滚动事件监听器的方法
    removeScrollEventListener() {
      this.$nextTick(() => {
        if (this.scrollEventListenerAdded) {
          document.querySelector
            .querySelector('.el-table__body-wrapper')
            .removeEventListener('scroll', this.handleScroll, true);
          this.scrollEventListenerAdded = false; // 标记已移除监听器
        }
      });
    },

    handleScroll(res) {
      // 监听滚动事件
      const height = res.target;
      const clientHeight = height.clientHeight; // 表格视窗高度 即wraper
      const scrollTop = height.scrollTop; // 表格内容已滚动的高度
      const scrollHeight = height.scrollHeight; // 表格内容撑起的高度
      if (clientHeight + scrollTop === scrollHeight) {
        if (this.isMoreLoad) {
          this.pageData.page++;
          this.getData();
        }
      }
    },
}

相关推荐

  1. Elment ui 数据方法

    2024-04-26 18:36:05       29 阅读
  2. elementUI 动态校验数据方法

    2024-04-26 18:36:05       47 阅读
  3. vue,elementUI同时提交,校验解决方案

    2024-04-26 18:36:05       42 阅读
  4. 【VUE】el-table表格 实现滚动到底部数据

    2024-04-26 18:36:05       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 18:36:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 18:36:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 18:36:05       87 阅读
  4. Python语言-面向对象

    2024-04-26 18:36:05       96 阅读

热门阅读

  1. CSV解析

    CSV解析

    2024-04-26 18:36:05      34 阅读
  2. Promise

    Promise

    2024-04-26 18:36:05      36 阅读
  3. Vue 3组合式API深度剖析:核心API使用指南

    2024-04-26 18:36:05       33 阅读
  4. UE5主视口导航快捷键汇总

    2024-04-26 18:36:05       37 阅读
  5. vue2中的文件命名规范

    2024-04-26 18:36:05       30 阅读
  6. Spring(25) 为什么使用 SpringCloud,而不是用 Dubbo?

    2024-04-26 18:36:05       29 阅读