wil*_*lma 6 javascript angularjs
设计用于触摸屏设备的默认ngClick的更强大的替代品.在发送点击事件之前,大多数移动浏览器在点击和释放后等待大约300毫秒.此版本立即处理它们,然后阻止以下单击事件传播.
这会在计算机上产生不一致的行为,单击事件继续冒泡/传播,但在移动设备上,它会停止.这意味着在监听元素点击的dom中更高的任何指令都会失败.对我来说似乎是一个错误,但我不能成为第一个必须解决这个问题的人.
element.triggerHandler('click', [event]);
Run Code Online (Sandbox Code Playgroud)
angular.element委托Angular的内置jQuery子集,称为"jQuery lite"或"jqLite".
jqLite可以访问jQuery triggerHandler,但不是trigger.
.triggerHandler()方法的行为与.trigger()类似,但有以下例外:
- 用.triggerHandler()触发的事件不会冒泡DOM层次结构; 如果它们不是直接由目标元素处理的,它们什么都不做.
所以Angular人员需要添加trigger对jqLite的支持并更改该行以trigger使其正常工作.
与此同时,我该如何解决这个问题呢?有没有办法在自定义指令中使用ngClick?
笑的奖励:来自ngTouch源代码的评论
// This is an ugly, terrible hack!
// Yeah, tell me about it.
Run Code Online (Sandbox Code Playgroud)
我已将第 453 行替换为
element[0].dispatchEvent(new MouseEvent('click', event));
Run Code Online (Sandbox Code Playgroud)
目前它正在按预期工作。不确定浏览器兼容性如何new MouseEvent(),所以如果您是的话,请随时发表评论。
| 归档时间: |
|
| 查看次数: |
1194 次 |
| 最近记录: |