const options = {
offset: -50
};
export default {
name: 'BarMenu',
data() {
return {
scrollingDirection: '',
}
},
computed: {
cssClasses() {
return {
hidden: this.scrollingDirection === 'down'
}
}
},
mounted() {
this.onScroll();
},
methods: {
scrollToIngredients() {
return this.$scrollTo(document.getElementById('ingredients-inside-content'), 600, options);
},
scrollToRecipes() {
return this.$scrollTo(document.getElementById('similar-recipes'), 600, options);
},
scrollToComments() {
return this.$scrollTo(document.getElementById('comments'), 600, options);
},
onScroll() {
let lastScrollTop = 0;
const handler = () => {
let st = window.pageYOffset || document.documentElement.scrollTop;
if (st > lastScrollTop) {
this.scrollingDirection = 'down';
} else {
this.scrollingDirection = 'up';
}
lastScrollTop = st <= 0 ? 0 : st;
};
window.removeEventListener("scroll", handler, false);
window.addEventListener("scroll", handler, false);
}
},
}
Эта линия не работает, почему? window.removeEventListener("scroll", handler, false);
Я перепробовал все подходы: стрелочную функцию, объявление функции и т. Д. Но этот прослушиватель событий вообще не удаляет.
handler
не будет одинаковымhandler
каждый раз при запускеscroll
- поэтому, если ваш код пытается удалить старый обработчик и заменить его, это не сработает - вы можете вместо этого сделатьhandler
метод (хотя сделайте его обычной функцией , а неarrow function
- однако, почему вам нужно менять обработчик на один и тот же код каждый раз, когда вы запускаете onScroll, остается загадкой. - person Bravo   schedule 22.11.2019