2017-08-04 6 views
1

こんにちは私はtodoリストを表示するのにIonic Slidesを使用しています。私はリストアイテムにそれらがあるので、スワイプゲストを無効にしたいと思います。その代わりに、メソッドを使用してスライドを変更したいと思います。ionic slider - lockSwipes(true)initialSlideおよびslideNext()メソッドを無効にしますか?

これは私のコンポーネントです:

@ViewChild(Slides) slides: Slides; 

days: SbCalendarDay[] = [] //this is a list of todo's of each day 

ngAfterViewInit() { 
    this.slides.lockSwipes(true); 
} 

slide(direction:string){ 
    if(direction === 'prev'){ 
     this.slides.slidePrev() 
    }else{ 
     this.slides.slideNext() 
    } 
} 

そして、私の意見:私は気の抜けたビールをロックするとき

<div class="sb-calendar-day"> 
    <ion-slides [initialSlide]="1" (ionSlideDidChange)="slideChanged($event)" (ionSlideWillChange)="slideWillChange($event)"> 
     <ion-slide *ngFor="let day of days"> 
      <sb-list [list]="day.events" (sbListEvent)="listEvent($event)"></sb-list> 
     </ion-slide> 
    </ion-slides> 
</div> 

はしかし、initialSlide入力はもう動作しません。私はarray[1]が今日であることをもって、arrayの3日から始めます。

さらに、方法slideNext()およびslidePrev()も反応しない。 lockSwipes(true)はスライダーを完全に「ロックダウン」しますか?

スライダーのスワイプジェスチャーのみを無効にする方法はありますか?

おかげ

答えて

2

はい、lockSwipes()ためsource codeを見ることで、それはslideNextslidePrevは 'ロック' されます機能のように思える:

lockSwipes(shouldLockSwipes: boolean) { 
    this._allowSwipeToNext = this._allowSwipeToPrev = !shouldLockSwipes; 
} 

機能が最終的に終わることslideTo -functionのthatsを呼び出しますswiper.tsからインポートした場合、_allowSwipeToNextとのチェックが行われます。

からインポート機能 initSwiperで、 initialSlideの値が関数 slideToへの引数として使用され、 _allowSwipe[Next|Prev]フラグがチェックされているため、動作しません

initialSlide -inputです。唯一のスワイプジェスチャーを無効にする

onlyExternalを使用します。

onlyExternal:trueの場合は、スライドを切り替えるための唯一の方法は、外部APIの使用slidePrevまたはslideNext

などの 機能
ngAfterViewInit() { 
    this.slides.onlyExternal = true; 
} 
+1

すごいです!それは私が望むことができた説明と最高の可能なanwser Thats、おかげでトン! –

+1

完全に同意、驚くべき答え。 +1 – sebaferreras

0
です

練習がどれくらい良いかわからないけどsetTimeoutです。しかし、このハックは私のために働いた。

setTimeout(()=> { 
     this.slides.lockSwipes(true); 
}, 100); 

とテンプレートコード:

<ion-slides (ionSlideDidChange)="slideChanged($event)" [initialSlide]="1"> 
関連する問題