连续执行功能?

时间:2017-10-09 12:24:17

标签: javascript jquery

我有一个function可以在满足特定条件时处理点击次数。

情境:

我希望仅在满足特定条件时单击“登录”按钮时自动关闭模式。而且这个条件在$scope.empSignin()

之内

所以我根据谷歌的一些消息来源做了什么,我创建了一个function,当条件有效时,它会处理click事件。

HTML

//$scope.closeModal function
<button id="closeModal" type="button" class="close" data-dismiss="modal" ng-click="closeModal()">&times;</button>

//$scope.empSignin function
<input type="button" value="Sign In" ng-click="empSignin(signinInfo)">

这是包含html的{​​{1}}文件,该文件会自动点击button

file.js

js function

$scope.closeModal = function(){ console.log('entered'); $timeout(function(){ var el = document.getElementById('closeModal'); angular.element(el).trigger('click'); }, 0); } $scope.empSignin = function(signinInfo){ var data = { username : signinInfo.username, password : signinInfo.password } $http.post('server/emp_signin.php', data).then(function(res){ window.alert(res.data.message); $scope.isMessage = res.data.message; if($scope.isMessage == 'Successfully Signed In'){ console.log('true'); $scope.closeModal(); } else { console.log('false'); } }); } 包含处理点击事件的js file

它按照我的预期工作,但是当事件发生时,在浏览器function中有持续执行(据我所知)。

我的问题是那里发生了什么,为什么会这样?我如何解决这个问题,因为当我在taskmanager中查看时,它会占用大量的设备资源。

以下是控制台的屏幕截图:

browsers console image

1 个答案:

答案 0 :(得分:0)

因为您在closeModal的点击事件上调用<button>函数,并且在函数中,您再次触发click事件,并再次调用closeModal函数和因此它会进入无限循环。所以你在控制台中看到entered文本很多次。这就是问题所在。

angular.element(el).trigger('click'); // This is putting your code in infinite execution.

因此,删除上述行并且不会持续执行您的代码。