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

时间:2016-03-28 21:21:29

标签: angularjs cordova ionic-framework

我正在开发一个cordova /离子应用程序,目前正在我的笔记本电脑上使用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 :(得分:0)

您是否在代码库中的任何位置使用alert()?看看this bug

您可以使用cordovaDialog

替换警报