【问题标题】:Angular ionic single tap and double tap角离子单击和双击
【发布时间】:2021-09-03 06:20:58
【问题描述】:

您好,我创建了一个指令,目标是使用 HammerJs 拦截单击和双击,但它不能按我想要的方式工作,现在我对如何解决问题没有任何想法。

我试过了:

  @HostListener('tap', ['$event'])
   handleTaps(event) {
     if(event.tapCount == 2) {
      this.doubleTap.emit();
      event.prevenDefault();
     } else {
       this.singleTap.emit();
       event.prevenDefault();
    }
   }

问题在于它确实调用了双击或双击,但也调用了之前的单击。防止这种情况的解决方案是什么?使用设定的超时时间?谢谢

【问题讨论】:

  • 盲猜,也许把event.prevenDefault()放在第一位?紧接着handleTaps(event) {
  • 谢谢,但它不起作用,我不知道

标签: javascript angular typescript ionic-framework double


【解决方案1】:

根据您的代码, 试试这个

firstClicked = false;    
@HostListener('tap', ['$event'])
handleTaps(event) {
  if(!this.firstClicked){
       this.firstClicked = true;
       this.singleTap.emit();
       setTimeout(()=> {
          this.firstClicked = false;
       }, 200);
   }else{
       this.doubleTap.emit();
   }
}

这是我用它制作的Angular example,但带有“点击”事件。 老实说,我不确定 setTimeout 是否适用于 IONIC,相反,您可以使用与我猜想的相同概念的原生 Timer API。

【讨论】:

  • 您好,感谢您的解决方案。它适用于点击但不能点击。我找到了一个解决方案,即使它不是最干净的解决方案,我使用自定义事件对应用程序的 ex 进行了一些修改:DoubleTap with HammerJs 和一个新闻事件,我减少了一点时间
  • 不客气@coco,它与 HammerJs 的 DoubleTap 一起工作?如果是的话那就太好了,我从你那里学到了一些新东西,兄弟,非常感谢你:))
猜你喜欢
  • 2017-07-26
  • 1970-01-01
  • 2017-10-15
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多