为什么我的ng-click事件会触发两次?

3

我正在开发一个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 一次。
1个回答

0

你的代码库中是否使用了alert()?请查看这个错误

你可以用cordovaDialog替换alert。


不,我没有使用任何alert()对话框。不过这个bug很有趣! - DaveDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接