首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ngTouch ngClick不泡泡

问ngTouch ngClick不泡泡
EN

Stack Overflow用户
提问于 2014-11-01 01:36:47
回答 3查看 1.3K关注 0票数 6

来自ngTouch ngClick文档

一个更强大的替代默认ngClick设计用于触摸屏设备。大多数移动浏览器在点击和发布后等待大约300 Most才发送点击事件。此版本将立即处理它们,然后防止以下单击事件传播。

这会造成不一致的行为,因为在计算机上,单击事件继续冒泡/传播,但在移动上,它停止。这意味着dom中较高的侦听元素单击的任何指令都会失败。对我来说,这似乎是个小问题,但我不应该是第一个去解决这个问题的人。

如果你看看ngTouch代码,问题源于第453行。

代码语言:javascript
复制
element.triggerHandler('click', [event]);

角文档

angular.element委托到jQuery的内置子集,称为"jQuery lite“或”jqLite“。

jqLite可以访问jQuery的triggerHandler,但不能访问trigger。

jQuery文档

.triggerHandler()方法的行为与.trigger()类似,但有以下例外:

  • 用.triggerHandler()触发的事件不会在DOM层次结构上冒泡;如果目标元素不直接处理这些事件,则什么也不做。

因此,需要将trigger支持添加到jqLite中,并将该行更改为trigger以使其正常工作。

同时,我该如何解决这个问题呢?在自定义指令中有使用ngClick的方法吗?

笑的奖金:来自ngTouch源代码的注释

代码语言:javascript
复制
// This is an ugly, terrible hack!
// Yeah, tell me about it.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-03 04:09:21

我已经把第453行换成

代码语言:javascript
复制
element[0].dispatchEvent(new MouseEvent('click', event));

它现在正在按预期工作。不确定new MouseEvent()的浏览器兼容性是什么样子的,所以如果是的话,可以随意评论。

票数 2
EN

Stack Overflow用户

发布于 2015-12-01 00:37:43

除了上面的解决方案之外,我还必须向我的每个锚添加ng-click="“才能完成这项工作。

注意:我宁愿把这写成评论,但是堆栈溢出不觉得我赢得了权利。抱歉的。

票数 2
EN

Stack Overflow用户

发布于 2016-04-12 14:37:36

较新版本的ngTouch 1.5.3+应该不再有此问题。请参阅https://github.com/angular/angular.js/commit/0dfc1dfebf26af7f951f301c4e3848ac46f05d7f

它是ngTocuh代码的副产品,旨在克服300 to的移动浏览器延迟问题。有关这方面的更多信息,请参见http://developer.telerik.com/featured/300-ms-click-delay-ios-8/。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26685498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档