为什么这个Swiper onReachEnd
回调会被执行两次?
我正在使用Ionic Slides,我的堆栈有3个页面:根页面,主幻灯片页面和辅助幻灯片页面。当我到达终点时,辅助幻灯片页面应该关闭:
@Component({
templateUrl: 'app/secondary-slides.html'
})
export class SecondarySlidesPage {
sliderOptions = {
onReachEnd: () => { this.nav.pop(); },
};
constructor(private nav: NavController) { }
}
上述工作,除了onReachEnd
回调被调用两次,因此两个页面从堆栈中弹出,关闭辅助幻灯片页面和主要幻灯片页面,让我回到根页面。主幻灯片页面如下所示:
@Component({
templateUrl: 'app/slides.html'
})
export class SlidesPage {
sliderOptions = { };
constructor(private nav: NavController) { }
public secondarySlides() {
this.nav.push(SecondarySlidesPage);
}
}
这是展示问题的plunker。
如何避免弹出两个页面?如果这是一个bug,它是在Ionic还是在Swiper中?
答案 0 :(得分:0)
作为一种解决方法,我可以在第一次使用后取消设置回调。
@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) { }
}
发生的情况是,当删除辅助幻灯片页面时,各个幻灯片组件将被销毁。这会自动更新slider
对象,该对象现在处于新的结束幻灯片并再次触发回调。我修改了Ionic幻灯片以移除rapidUpdate
中的Slide.ngOnDestroy
来电,问题就消失了。
在最终决定发布问题之后,我没想到能够如此迅速地解决问题。 Bug report here