Почему Angular JS не отслеживает изменение переменных в контроллере в процессе скрола на мобильном?

Пример кода из сервиса
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 когда перестаю скролить.
Как с этим бороться, присваивать классы нейтивными методами браузера ?
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы