两杯汽水
2021-05-14 14:07
采纳率: 93.1%
浏览 184
已结题

如何让vue监听滚动轴事件只执行一次?

如何让vue监听滚动轴事件只执行一次或者防止多次触发

 

  • 好问题 提建议
  • 收藏

5条回答 默认 最新

  • 已采纳
        //在500毫秒内只触发一次scroll事件
        var timer;
        var flag = true;
        window.addEventListener('scroll', () => {
            if (flag) {
                this.handleScroll();
            }
            flag = false;
            clearTimeout(timer);
            timer = setTimeout(()=>{flag = true}, 500);
        }, true);
    
    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • 崽崽的谷雨 2021-05-14 14:25

    再滚动事件里加个标识判断一下

    data(){
     return {
      flag=true;
     }
    }
    
    
    
    scroll(){
     //最上面
      if(this.flag==false){//说明已经运行过了
         return //或者 removeListener移除
      }
     //操作完之后最后
     this.flag=false;
    }
    评论
    解决 2 无用
    打赏 举报
  • CSDN专家-showbo 2021-05-14 14:24

    用setTimeout延时执行下

    
        var timer,me=this;
        window.addEventListener('scroll', () => {
            clearTimeout(timer);
            setTimeout(() => { me.handleScroll() }, 300);
        }, true);
    评论
    解决 无用
    打赏 举报
  • iMingzhen 2021-05-14 15:34

    可以执行的同时移除监听

        window.addEventListener('scroll',()=>{
          this.handleScroll();
          window.removeEventListener('scroll');
        },true);
    评论
    解决 无用
    打赏 举报
  • 有问必答小助手 2021-05-14 17:43

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题