1
我在我的一个AngularJS应用程序中遇到了一个奇怪的问题。该应用程序使用iCheck作为复选框,问题是这样的:在手机(或移动模拟器)上点击其标签来选择复选框时,绑定到该复选框的事件会被触发两次。使用iCheck - 在手机上调用两次的事件
我已经创建了一个的jsfiddle在那里你可以重现自己的问题:https://jsfiddle.net/o6oewfff/22/
<input data-icheck data-ng-model="product.selected" id="{{product.id}}" type="checkbox" data-ng-change="callAnEvent()" />
首先,来看看它是如何工作的:
- 打开的jsfiddle在您的浏览器
- 在您的开发人员工具栏中打开javascript控制台
- 选择其中一个复选框通过点击标签上,你会看到在控制台日志中的三个日志条目:应用,事件称为和更新
现在,让我们重现我想这个问题修正:
- 打开的jsfiddle在移动仿真器(尝试iPhone 6例如)
- 打开的JavaScriptç onsole你的开发人员工具栏中
- 通过点击标签上选择复选框的一个,你会看到在控制台日志日志项:应用,事件称为,更新,事件调用和更新
截图:http://i.stack.imgur.com/7j03S.png
正如您所看到的,当使用移动设备时,向控制台记录“event called”和“update”的事件会被触发两次。此外,复选框未被选中。有人能够弄清楚为什么会发生这种情况吗?
谢谢!
它做(至少部分地)与悬停。尝试使用'labelHover:false'禁用悬停,看看它是否有所作为。在大多数触控设备上,当有悬停的东西时,第一个水龙头触发悬停,第二个水龙头是实际的“点击”。 – 2015-02-11 22:56:28