2

我该怎么办?我已经看过离子论坛,谷歌的结果,并没有发现任何有用的东西。另外,我已经尝试过触发dblclickdbltapdoubletapdoubleClick,甚至多tapclick事件,但似乎没有任何工作。如何以编程方式触发离子中的doubletap事件?

我知道,我以前甚至不存在的,我只是想看看是否离子会以某种方式承认他们的一些事件。另外,我尝试了点击事件,因为该应用程序在浏览器中运行良好,所以我认为它也可以在规范中运行。

如果有帮助,我需要这个单元测试我的功能。我有一个ion-list,当用户双击一个ion-item时,它将该项目标记为已检查。我的标记目前是这样的:

<ion-item on-double-tap="ctrl.toggleProductConfirmation(product)" ... 

而我的天赋,就像这样:

describe('when checking an item', function() { 
    beforeEach(function() { 
    this.element.find('ion-item').eq(0).trigger('doubletap'); 
    }); 

** specs here ** 

最后一个细节:我用幻影JS运行我的规格。

感谢您的帮助!

回答

3

我问同样的问题在离子论坛,幸运的是,有人能帮助我。

离子,显然你可以随时使用ionic.trigger触发任何你想要的事件,这包括doubletaphttp://ionicframework.com/docs/api/utility/ionic.EventController/#trigger)。

的文档是有点混乱,所以我会在这里发布我的代码,以帮助别人同样的问题:

ionic.trigger('doubletap', { target: this.element.find('ion-item').get(0) }); 

因为我在我的规格使用jQuery,我不得不用get(0)来检索DOM元素本身,因为直接传递jQuery对象不适合我。

链接到我的离子论坛主题:https://forum.ionicframework.com/t/how-to-programmatically-trigger-doubletap-event/41264

+0

对我而言,至少不起作用。你可以给一些代码的上下文吗?这是一个控制器? –

+0

尝试你的方式后,使用'this.element.find('ion-item')。get(0)''失败。 我试过这个'$('#some-item')。get(0)'并且工作。 我只是将它分享给可能有我的问题的人,或者如果您想更新它。尽管如此,你的回答帮助了我。谢谢:) –

+0

是的,'this.element'是一个jquery元素,我得到了和你一样的方式。很高兴我能帮上忙! –

0

这在离子中可能是不可能的,因为Ionic消除了默认的300毫秒延迟,为应用程序提供了更多原生的感觉。 Ref

您可以尝试射击事件与延迟禁用元素如下

<div data-tap-disabled="true"> 
    <div id="google-map"></div> 
</div> 
+0

但是,假设我们关闭水龙头,将设备上的doubletap工作? –

+0

双击只会在您指定的元素中被禁用 – Nikhil

相关问题