Пример кода из сервиса
onScroll(){
this.scrollAfterTouchListener('scroll');
}
onTouchStart(){
this.scrollAfterTouchListener('touch');
}
srollAfterTouch(type){
if (type === 'touch') this.touched = true;
if (type === 'scroll' && this.touched){
if ((window.scrollY - this.prevScrollValue) < -50 ){
if (!this.direction || this.direction === "up") this.emit("touchscroll",'down');
this.direction = 'down';
this.prevScrollValue = window.scrollY
}
if ((window.scrollY - this.prevScrollValue) >50 ){
if (!this.direction || this.direction === "down") this.emit("touchscroll",'up');
this.direction = 'up';
this.prevScrollValue = window.scrollY
}
}
}
Пример кода в контроллере
listenChangeVisiblity() {
services.get(this).scope.$watch(() => this.isVisible, (direction) => {
console.log({"visiblity1":direction});
});
services.get(this).header.on('touchscroll', this.setVisiblityHandler);
}
setVisiblity(direction){
this.isVisible = direction;
console.log({"visiblity2":direction});
}
Суть в том, что в консоли событие visiblity2 проходит сразу после начала скрола, а visiblity1 когда перестаю скролить.
Как с этим бороться, присваивать классы нейтивными методами браузера ?