ionScoll: почему автоматическая прокрутка выполняется дважды?

У меня есть приложение со страницей, состоящей из двух частей. Между этими частями есть две кнопки. При нажатии кнопки A страница должна прокручиваться до части A. При нажатии кнопки B страница должна перейти к части B. Теперь это само по себе отлично работает.

Проблема возникает, когда я хочу прослушивать события прокрутки пользователя. Например, при прокрутке до части A страница должна автоматически прокручиваться до A. B соответственно.

Независимо от того, использует ли пользователь кнопки или прокручивает касанием, действие прокрутки выполняется дважды. Например, в моем журнале я вижу что-то вроде

Opening A view...
...done A
Opening A view...
...done A

Мой код (подписаться на (ionScrollStart)="onScrollStart()", (ionScrollEnd)="onScrollEnd()", (ionScroll)="onScroll($event)")

@ViewChild(IonContent, { static: false }) _content: IonContent;

  private onScrollStart()
  {
    this._lastDeltaY = 0;
  }

  private onScrollEnd()
  {
    if(this._ignoreScrolling)
      return;

    let promise;
    this._ignoreScrolling = true;
    if(this._lastDeltaY > 0)
    {
      promise = this.openAView();
    }
    else if(this._lastDeltaY < 0)
    {
      promise = this.openBView();
    }
    promise.then(_ => {
      this._ignoreScrolling = false;
    });
  }

  private onScroll(event)
  {
    this._lastDeltaY = event.detail.deltaY;
  }



 private async openAView()
  {
    console.log('Opening A view...');

    await this._content.scrollToTop(viewChangeScrollTimeMilliseconds);
    this._AViewOpen = false;

    console.log('...done A');
  }

Возможно, я слишком долго смотрю на свой код, но я не могу понять, почему это происходит дважды. Кто-нибудь знает, что я делаю не так?

0 ответов

Другие вопросы по тегам