vue-infinite-scroll 搭配使用ant-design-vue 弹窗dialog无法触发loadMore方法

问题描述

在ant-dialog中嵌套使用List的滚动加载功能,vue-infinite-scroll配合使用时,滚动和初始时,都无法触发loadmore

问题链接:https://github.com/ElemeFE/vue-infinite-scroll/issues/147

1.弹窗启动时,未经过mounted生命周期,所以未绑定成功滚动事件

2.获得监听滚动函数的element时(getScrollEventTarget),也就是滚动的容器时,未能拿到overflowY的值,是根据这个值去返回当前滚动容器的元素。否则拿不到返回window的值

const ctx = '@@InfiniteScroll';

let throttle = function (fn, delay) {
  let now, lastExec, timer, context, args; //eslint-disable-line

  let execute = function () {
    fn.apply(context, args);
    lastExec = now;
  };

  return function () {
    context = this;
    args = arguments;
    now = Date.now();

    if (timer) {
      clearTimeout(timer);
      timer = null;
    }

    if (lastExec) {
      let diff = delay - (now - lastExec);
      if (diff < 0) {
        execute();
      } else {
        timer = setTimeout(() => {
          execute();
        }, diff);
 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue-infinite-scroll 是一个 Vue.js 的插件,它可以帮助我们在滚动页面时加载更多的数据,实现无限滚动的效果。下面是在 Vue3 中使用 vue-infinite-scroll 的步骤: 1. 安装 vue-infinite-scroll: ``` npm install vue-infinite-scroll --save ``` 2. 在 main.js 中引入 vue-infinite-scroll: ```javascript import { createApp } from 'vue' import App from './App.vue' import infiniteScroll from 'vue-infinite-scroll' const app = createApp(App) app.use(infiniteScroll) app.mount('#app') ``` 3. 在需要使用无限滚动的组件中添加 v-infinite-scroll 指令: ```html <template> <div v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10"> <ul> <li v-for="item in items" :key="item.id">{{ item.title }}</li> </ul> </div> </template> <script> export default { data() { return { items: [], page: 1, busy: false } }, methods: { loadMore() { if (this.busy) return this.busy = true fetch('/api/getData?page=' + this.page) .then(res => res.json()) .then(data => { this.items = this.items.concat(data) this.page++ this.busy = false }) } } } </script> ``` 在上面的代码中,我们使用 v-infinite-scroll 指令来监听滚动事件,并调用 loadMore 方法来加载更多的数据。infinite-scroll-disabled 属性用来控制是否禁用无限滚动,infinite-scroll-distance 属性用来设置滚动到距离底部多少像素时触发加载更多数据的事件。 以上就是使用 vue-infinite-scroll 实现无限滚动的基本步骤。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值