在调用需要一些计算(或渲染)时间的函数后,所有单击事件(ng-click函数以及通过addEventListener
单击与js绑定的函数)都不会被触发。
点击事件停止工作后我注意到的事情:
setIntervall
函数测试它,它向控制台打印一些东西)。getElementById("...").click()
工作的控制台触发click事件。, "ngMaterial", "ngMessages"
依赖项将防止错误发生这是一个最小的示例,您可能必须更改加载变量,以便完成计算至少需要5秒钟。只需单击“计算”标题即可启动重载功能。如果计算时间足够长,“计算”按钮就会停止工作。
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.8/angular-material.min.css">
</head>
<body ng-app="BlankApp" ng-controller="heavywork" ng-cloak>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-aria.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-messages.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.2/angular-route.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.8/angular-material.min.js"></script>
<script type="text/javascript">
document.body.addEventListener("click", function () { console.log("clicked"); });
document.body.addEventListener("touchend", function () { console.log("touchend"); });
var app = angular.module('BlankApp', ["ngRoute", "ngMaterial", "ngMessages"]);
app.controller("heavywork", function ($scope) {
$scope.count = 0;
$scope.calculate = function () {
$scope.count += 1;
//Edit load here such that it takes at least 5 seconds to finish
var load = 1000000000;
for (i = 0; i < load; i++) var x = Math.sqrt(10000);
}
})
</script>
{{count}}
<h1 ng-click="calculate()">calculate</h1>
</body>
</html>