我正在开发一个cordova/ionic应用程序,并且目前在我的笔记本电脑上使用Android模拟器进行测试。我有一个ng-click
事件会触发两次。当我查看第一次执行的调用堆栈时,我看到的是:
CreateAdController.$scope.save in create-ad-ctrl.js, line 96 JavaScript
fn in eval code.js, line 3002 JavaScript
<anonymous function> in ionic.bundle.js, line 62386 JavaScript
Scope.$eval in ionic.bundle.js, line 29158 JavaScript
Scope.$apply in ionic.bundle.js, line 29257 JavaScript
<anonymous function> in ionic.bundle.js, line 62385 JavaScript
eventHandler in ionic.bundle.js, line 16583 JavaScript
triggerMouseEvent in ionic.bundle.js, line 2948 JavaScript
tapClick in ionic.bundle.js, line 2937 JavaScript
tapTouchEnd in ionic.bundle.js, line 3064 JavaScript
第二次执行具有略微不同的调用堆栈:
CreateAdController.$scope.save in create-ad-ctrl.js, line 96 JavaScript
fn in eval code.js, line 3002 JavaScript
<anonymous function> in ionic.bundle.js, line 62386 JavaScript
Scope.$eval in ionic.bundle.js, line 29158 JavaScript
Scope.$apply in ionic.bundle.js, line 29257 JavaScript
<anonymous function> in ionic.bundle.js, line 62385 JavaScript
eventHandler in ionic.bundle.js, line 16583 JavaScript
triggerMouseEvent in ionic.bundle.js, line 2948 JavaScript
tapClick in ionic.bundle.js, line 2937 JavaScript
tapMouseUp in ionic.bundle.js, line 3013 JavaScript
这里最显著的区别在于最后一行代码(或执行的第一行代码),具体如下:
tapTouchEnd in ionic.bundle.js, line 3064 JavaScript
并且
tapMouseUp in ionic.bundle.js, line 3013 JavaScript
第一个事件是
tapTouchEnd
事件,第二个事件是 tapMouseUp
。有没有办法防止它触发两次?这是因为我在笔记本上测试吗,因为实际上正在发生,所以自然会触发 tapMouseUp
事件吗?顺便说一下,我以前见过事件触发两次的情况,因为控制器被引用了两次。我可以确认在这种情况下不是这种情况。我还可以确认,只引用了
ionic.bundle.js
一次。