我在 Angular 中使用 ngx-owl-carousel-o 库。每个轮播项目都被创建为一个带有(点击)事件的 div。我遇到的问题是,当拖动轮播时,它总是会不合需要地触发点击事件,即点击应该只在不拖动时触发。
<owl-carousel-o [options]="customOptions" (dragging)="on_carouselDrag($event.dragging)">
<ng-container *ngFor="let item of items">
<ng-template carouselSlide>
<div (click)="on_itemSelected(item)">
<!-- ... -->
</div>
</ng-template>
</ng-container>
</owl-carousel-o>
我制定了一个似乎有效的解决方案,但我不确定它是否适合使用 setTimeout
。我基本上只是用它来延迟 on_carouselDrag
的结束,以确保 on_vendorSelected
首先触发。
on_itemSelected(item: string): void {
if(!this.isDragging){
// ...
}
}
on_carouselDrag(dragging: boolean){
setTimeout(() => {
this.isDragging = dragging;
}, 10 )
}
如果可以改进这种方法,我们将不胜感激。