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');
}
Возможно, я слишком долго смотрю на свой код, но я не могу понять, почему это происходит дважды. Кто-нибудь знает, что я делаю не так?