Слайды - перед событием смахивания - PullRequest
0 голосов
/ 06 ноября 2018

Есть ли событие слайда, которое срабатывает непосредственно перед началом перехода слайда?
Я уже пробовал ionSlideNextStart и ionSlideWillChange , но ни одно из них не работает так, как нужно Мне это нужно.

То, что я хочу, это заблокировать удар на основе условия. Например, я хочу заблокировать свайп, если изображение увеличено, и разблокировать его, если изображение уменьшено.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Спасибо за вашу идею. Я выбрал первый вариант. Я думал об этом, но я новичок в Ionic, и я все еще учусь.
Функция масштабирования на самом деле является директивой ( zoom-pan ), и мне не пришло в голову, что Доступ к компоненту возможен из директивы.

<ion-slides zoom-pan>
    <ion-slide *ngFor="let page of pages;">
        [...]
    </ion-slide>
</ion-slides>

Но я провел еще несколько исследований, и благодаря this я ввел ViewContainerRef в конструктор директивы.
С помощью this.hostComponent = this.viewContainerRef["_data"].componentView.component у меня есть доступ к слайдам, и я заблокировал / разблокировал прокрутку при увеличении / уменьшении.

0 голосов
/ 06 ноября 2018

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

Однако, если вы хотите пойти по пути блокировки в начале слайда, используя ionSlideNextStart или ionSlideWillChange, вы можете сделать это в два этапа.

В этом случае вам придется вернуться к предыдущему слайду, потому что событие слайда началось, и я не уверен, есть ли способ остановить это: Псевдокод:

slide.slider.slideTo(indexOfPrevSlide, 2000)

А затем применить блокировку, используя shouldLockSwipeToNext и shouldLockSwipeToPrevg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...