2016-12-23 1 views
0

Pourquoi ce rappel SwiperonReachEnd est-il exécuté deux fois? J'utilise Ionic Slides et ma pile contient 3 pages: la page racine, une page de diapositives principales et une page de diapositives secondaire. La page diapositives secondaire devrait fermer quand j'atteins la fin:Pourquoi cette fonction de rappel de Swiper onReachEnd se déclenche-t-elle deux fois dans les diapositives ioniques?

@Component({ 
    templateUrl: 'app/secondary-slides.html' 
}) 
export class SecondarySlidesPage { 
    sliderOptions = { 
    onReachEnd:() => { this.nav.pop(); }, 
    }; 

    constructor(private nav: NavController) { } 
} 

Les travaux ci-dessus, sauf que le rappel onReachEnd est appelé deux fois, alors deux pages sont extraites de la pile, la fermeture de la glisse secondaire Page et la page des diapositives primaires, me ramenant à la page racine. Les diapositives première page ressemble à ceci:

@Component({ 
    templateUrl: 'app/slides.html' 
}) 
export class SlidesPage { 
    sliderOptions = { }; 

    constructor(private nav: NavController) { } 

    public secondarySlides() { 
    this.nav.push(SecondarySlidesPage); 
    } 
} 

Voici une démonstration plunker la question.

Comment puis-je éviter d'ouvrir les deux pages? Si c'est un bug, est-ce dans Ionic ou dans Swiper?

Répondre

0

Pour contourner le problème, je peux annuler le rappel après sa première utilisation.

@Component({ 
    templateUrl: 'app/secondary-slides.html' 
}) 
export class SecondarySlidesPage { 
    @ViewChild('slides') slides:Slides; 

    sliderOptions = { 
    onReachEnd:() => { 
     this.slides.slider.params.onReachEnd = undefined; 
     this.nav.pop(); 
    }, 
    }; 

    constructor(private nav: NavController) { } 
} 

En l'occurrence, lorsque la page des diapositives secondaires est supprimée, les composants de la diapositive individuelle sont détruits. Cela met automatiquement à jour l'objet slider, qui se trouve maintenant dans une nouvelle diapositive de fin et déclenche à nouveau le rappel. J'ai modifié les diapositives ioniques pour supprimer l'appel rapidUpdate dans Slide.ngOnDestroy, et les problèmes disparaissent.

Je ne m'attendais pas à trouver quelque chose si rapidement après avoir décidé de poster une question. Bug report here.