vue3 + element-plus 表格是否触底指令

一、描述

        1、监测是否到达容器底部 默认检测的是 element-plus的 table 可滚动元素  如果想判断其他元素  则需要传入指定的class值

        2、v-more="{ className, callback }"  className滚动元素的类名(.dom_name(默认是.el-scrollbar__wrap))  callback 为组件内回调函数(值为函数)

二、代码

// 监测是否到达容器底部 默认检测的是 element-plus的 table 可滚动元素  如果想判断其他元素  则需要传入指定的class值
// v-more="{ className, callback }"  className滚动元素的类名(.dom_name(默认是.el-scrollbar__wrap))  callback 为组件内回调函数(值为函数)

import { ref } from 'vue'

const middleware = ref({})
const handler = e => {
  const { callback } = middleware.value.value
  if (
    e.target.children[0].getBoundingClientRect().height - e.target.getBoundingClientRect().height <= e.target.scrollTop &&
    Object.prototype.toString.call(callback) === '[object Function]'
  )
    callback()
}

export default {
  mounted(el, binding) {
    const { className } = binding.value
    middleware.value = binding
    const wrap = el.querySelector(className ? className : '.el-scrollbar__wrap')
    wrap?.addEventListener('scroll', handler)
  },
}

三、使用:

<template>
  <!-- 第一步、绑定指令 注意我这个是全局指令  别忘了注册这个指令  否则不好使 -->
  <el-table v-more="{ callback }">
    <el-table-column prop="date" label="Date" width="180" />
    <el-table-column prop="name" label="Name" width="180" />
    <el-table-column prop="address" label="Address" />
  </el-table>
</template>

<script setup>
  // 第二部、到大表格底部回调
  const callback = () => {
    console.log('触底的回调函数');
  }
</script>

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Vue 3.0+Element-Plus开发后台管理系统的步骤: 1.首先,确保你已经安装了Node.js和npm包管理器。 2.使用以下命令安装Vue CLI 4: ```shell npm install -g @vue/cli ``` 3.使用Vue CLI创建一个新项目: ```shell vue create my-project ``` 4.在创建项目时,选择使用Vue 3.0版本,并启用class-style component语法: ```shell ? Please pick a preset: Manually select features ? Check the features needed for your project: Choose Vue version, Babel, Router, Vuex, CSS Pre-processors, Linter, Unit ? Choose a version of Vue.js that you want to start the project with 3.x (Preview) ? Use class-style component syntax? Yes ? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? No ? Use history mode for router? (Requires proper server setup for index fallback in production) Yes ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with dart-sass) ? Pick a linter / formatter config: ESLint with error prevention only ? Pick additional lint features: Lint on save ? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files ``` 5.安装Element-Plus和Echarts 5.0: ```shell npm install element-plus echarts@5.0 ``` 6.在main.js中引入Element-Plus和Echarts: ```javascript import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './store' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' import echarts from 'echarts' const app = createApp(App) app.use(store) app.use(router) app.use(ElementPlus) app.config.globalProperties.$echarts = echarts app.mount('#app') ``` 7.现在你可以开始使用Element-Plus和Echarts来开发你的后台管理系统了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值