Angular 为什么这个Swiper OnReachen回调会在Ionic幻灯片中触发两次?
为什么这个Angular 为什么这个Swiper OnReachen回调会在Ionic幻灯片中触发两次?,angular,ionic-framework,ionic2,swiper,Angular,Ionic Framework,Ionic2,Swiper,为什么这个onReachEnd回调要执行两次 我正在使用,我的堆栈有3个页面:根页面、主幻灯片页面和辅助幻灯片页面。当我到达终点时,辅助幻灯片页面应关闭: @Component({ templateUrl: 'app/secondary-slides.html' }) export class SecondarySlidesPage { sliderOptions = { onReachEnd: () => { this.nav.pop(); }, }; cons
onReachEnd
回调要执行两次
我正在使用,我的堆栈有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);
}
}
这里有一个例子来说明这个问题
如何避免两页同时弹出?如果这是一个bug,它是在Ionic中还是在Swiper中?作为一种解决方法,我可以在首次使用回调后取消其设置
@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) { }
}
发生的情况是,当第二张幻灯片页面被删除时,单个幻灯片组件被销毁。这会自动更新滑块
对象,该对象现在位于新的幻灯片末尾,并再次触发回调。我修改了Ionic幻灯片,删除了rapidUpdate
调用Slide.ngondestory
,问题就消失了
在最终决定发布一个问题后,我没想到会这么快就想出来