从ngTouch ngClick documentation:ngTouch ngClick不起泡
一个更强大的替代设计成在触摸屏设备中使用的默认ngClick。在发送点击事件之前,大多数移动浏览器在点击并释放后等待约300毫秒。此版本立即处理它们,然后阻止传播下列单击事件。
这会在计算机上产生不一致的行为,点击事件继续冒泡/传播,但在移动设备上停止。这意味着dom中任何听取元素点击的指令都会失败。看起来像是一个错误,但我不能成为第一个必须解决这个问题的人。
如果你看一下ngTouch code, the problem stems from line 453
element.triggerHandler('click', [event]);
angular.element
代表到角的内置jQuery的,所谓的 “精简版的jQuery” 或子集 “jqLite。”
jqLite有权访问jQuery的triggerHandler
,但不是trigger
。
的.triggerHandler()方法的行为类似于.trigger(),但有以下例外:
- 触发的事件与.triggerHandler()不冒泡了DOM层次结构;如果它们不是直接由目标元素处理,它们什么也不做。
所以角乡亲需要trigger
支持添加到jqLite并更改该行trigger
它才能正常工作。
与此同时,我该如何解决这个问题?有没有办法在自定义指令中使用ngClick?
的笑奖励:Comment from the ngTouch source code
// This is an ugly, terrible hack!
// Yeah, tell me about it.