跳转用的this.$router.push()
改用beforeDestroy事件试试,destroyed后对应的事件和处理函数应该被注销了,再取消监听事件不对应导致没法取消
模拟了下可以注销呢,你如何销毁vue的呢?
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="d" style="height:2000px"><input type="button" value="destroy" v-on:click="destroy" />{{a}}</div>
<script defer>
var vm=new Vue({
el:'#d',
data: {
a: 1
},
mounted: function () {
this.$nextTick(function () {
console.log('$nextTick')
window.addEventListener('scroll', this.handlescroll)
});
window.addEventListener('scroll', this.handlescroll, true);
},
destroyed() {
console.log('destroyed')
window.removeEventListener('scroll', this.handlescroll);
window.removeEventListener('scroll', this.handlescroll, true)
},
methods: {
handlescroll() {
console.log(new Date().toLocaleString())
},
destroy() {
console.log('call destroy')
this.$destroy();
}
}
})
</script>
改用beforeDestroy事件试试,destroyed后对应的事件和处理函数应该被注销了,再取消监听事件不对应导致没法取消
先确定这个移除生效了。如果确实生效了,那就是this.handelScroll方法有问题。
destroyed
我这里有2个监听事件,因为引入了animate.css,一个是动画,另一个是随着滚动轴滑动顶掉遮罩层
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632