当前位置: 代码迷 >> 综合 >> vue项目下拉加载自定义指令实现
  详细解决方案

vue项目下拉加载自定义指令实现

热度:43   发布时间:2024-01-31 08:15:47.0

最近接触到一个需求——pc端下拉加载的功能,在弹窗内部实现下拉加载分页,主要就是通过判断滚动条的距离底部的距离改变pageNum值加载新的数据。本章是通过自定义vue指令完成这一需求

效果图是一个分两栏显示的弹窗,在一个弹窗内部实现下拉加载,又想法的小伙伴可以在下拉加载过程中添加相关loading动画展示。。。

操作比较简单,废话不多说了,简单粗暴直接贴代码。。。。。。

<template><div class="left-content" v-loadmore="loadmore"></div>
</template>
<script>export default{directives: {loadmore: {bind(el, binding) {   var p = 0;   var t = 0;   var down = true;   //这里是:拿到当前绑定的dom,并监听当前的dom的scroll事件完成下拉加载var selectWrap = elselectWrap.addEventListener('scroll', function() {     //判断是否向下滚动     p = this.scrollTop;  if(t < p){     down = true;     }else{       down = false;     }     t = p;     //判断是否到底     const sign = 10;     const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight;     if (scrollDistance <= sign && down) {       binding.value()     }   }); }}},data(){rollflag:false},created:{this.getData()},methods:{//获取数据getData(){//接口请求成功后把rollflag置为true},//滚动加载数据loadmore() {if (this.rollflag) { //这里是业务场景判断是否需要加载新的数据if(this.pageInfo.remainTotal>this.pageInfo.curPageSize){this.rollflag = false;this.pageNum++;this.getData()}else{return};}},}}</script>
<style></style>

 

  相关解决方案