vue 取消某个div的addEventListener("scroll")

在Vue里面监听某个div的滚动条(大于200时nav变色,小于200时透明),然后当跳转到另一个路由再回来时,不起作用了。问题是我在离开当前路由时也注销监听,各位看代码,会的回复下,不会的帮忙问问,谢谢各位大佬了,急急急。或者有更好的实现方式更好,这个监听实在坑

mounted(){
    //获取节点
    this.scrollDiv = document.getElementsByClassName('myNav')[0];
    //绑定事件
    this.scrollDiv.addEventListener('scroll',this.scrollFunction,{ passive: false });
},
beforeRouteLeave(to, from, next){//离开路由前执行
        this.scrollDiv.removeEventListener('scroll',this.scrollFunction,{ passive: false });
        next();
    }

这代码哪里有问题,根本没效果

阅读 5.6k
3 个回答

为啥不放在 beforeDestroy() 这个生命周期里试试看呢

是不是报错了,this没问题?还有楼上说的放到 
beforeDestroy() {
    this.scrollDiv.removeEventListener('scroll',() => this.scrollFunction(),{ passive: false });
}

暂时处理方式就是把组件写在keep-alive,然后检测到,注不注销(removeEventListener)都可以再次调起来,为了规范以及影响其他页面可能也使用到,最好都注销一下,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏