创建一个ts文件,注册自定义指令
import { Directive, DirectiveBinding } from 'vue'
const loadMore: Directive = {
beforeMount(el: any, binding: DirectiveBinding) {
const selectDom = document.querySelector('.el-select-dropdown .el-select-dropdown__wrap')
function loadMores(this: any) {
const isBase = this.scrollHeight - this.scrollTop <= this.clientHeight
if (isBase) {
binding.value && binding.value()
}
}
el.selectDomInfo = selectDom
el.userLoadMore = loadMores
selectDom?.addEventListener('scroll', loadMores)
},
beforeUnmount(el: any) {
if (el.userLoadMore) {
el.selectDomInfo.removeEventListener('scroll', el.userLoadMore)
delete el.selectDomInfo
delete el.userLoadMore
}
}
}
export default loadMore
在所需页面引入创建的自定指令(示例为局部引入)
import vLoadMore from 'src/utils/loadMore'
在select组件上添加v-load-more指令
<el-select v-load-more="getMoreData"></el-select>
然后就搞定了,可以处理getMoreData中写你的获取更多数据的方法了
const getMoreData = async () => {
console.log('获取更多数据')
}
文章展示了如何在Vue项目中创建一个ts文件,定义一个名为`loadMore`的自定义指令,该指令用于监听el-select组件的滚动事件,并在用户滚动到底部时调用`getMoreData`方法来获取更多数据。这个方法是异步的,可以在其中实现分页加载逻辑。

被折叠的 条评论
为什么被折叠?



