我有一个function
可以在满足特定条件时处理点击次数。
情境:
我希望仅在满足特定条件时单击“登录”按钮时自动关闭模式。而且这个条件在$scope.empSignin()
。
所以我根据谷歌的一些消息来源做了什么,我创建了一个function
,当条件有效时,它会处理click
事件。
HTML
//$scope.closeModal function
<button id="closeModal" type="button" class="close" data-dismiss="modal" ng-click="closeModal()">×</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中查看时,它会占用大量的设备资源。
以下是控制台的屏幕截图:
答案 0 :(得分:0)
因为您在closeModal
的点击事件上调用<button>
函数,并且在函数中,您再次触发click
事件,并再次调用closeModal
函数和因此它会进入无限循环。所以你在控制台中看到entered
文本很多次。这就是问题所在。
angular.element(el).trigger('click'); // This is putting your code in infinite execution.
因此,删除上述行并且不会持续执行您的代码。