2015-02-11 46 views
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()" /> 

首先,来看看它是如何工作的:

  1. 打开的jsfiddle在您的浏览器
  2. 在您的开发人员工具栏中打开javascript控制台
  3. 选择其中一个复选框通过点击标签上,你会看到在控制台日志中的三个日志条目:应用事件称为更新

现在,让我们重现我想这个问题修正:

  1. 打开的jsfiddle在移动仿真器(尝试iPhone 6例如)
  2. 打开的JavaScriptç onsole你的开发人员工具栏中
  3. 通过点击标签上选择复选框的一个,你会看到在控制台日志日志项:应用事件称为更新事件调用更新

截图:http://i.stack.imgur.com/7j03S.png

正如您所看到的,当使用移动设备时,向控制台记录“event called”和“update”的事件会被触发两次。此外,复选框未被选中。有人能够弄清楚为什么会发生这种情况吗?

谢谢!

+0

它做(至少部分地)与悬停。尝试使用'labelHover:false'禁用悬停,看看它是否有所作为。在大多数触控设备上,当有悬停的东西时,第一个水龙头触发悬停,第二个水龙头是实际的“点击”。 – 2015-02-11 22:56:28

回答

0

给这一个尝试https://jsfiddle.net/scdmuout/

我在下面添加停止射击上的触摸和点击

event.preventDefault(); 
event.stopPropagation(); 
相关问题