为什么我的角色脚本运行无限循环?
问题描述:
我想要做的是通过使用for循环加载页面时通过事件点击来检查三个框。它会发生什么,它会运行一个无限循环,然后页面挂起。下面是代码:为什么我的角色脚本运行无限循环?
<!DOCTYPE html>
<html >
<head>
<link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
</head>
<body ng-app="ngToggle">
<div ng-controller="AppCtrl">
<input type="checkbox" ng-model="dean" ng-click="btnChange($event, values, 1)" id="check-1" name="one" class="here" >
<input type="checkbox" ng-model="armada" ng-click="btnChange($event, values, 2)" id="check-2" name="one" class="here" >
<input type="checkbox" ng-model="armada" ng-click="btnChange($event, values, 2)" id="check-3" name="one" class="here" >
<!--<p ng-repeat="btn in btns">-->
<!-- <input type="checkbox" ng-model="btn.bool" class="here" > {{ btn.value }}-->
<!--</p>-->
{{btn }}
{{values }}
</div>
<script type="text/javascript">
angular.module('ngToggle', [])
.controller('AppCtrl',['$scope', '$timeout', function($scope, $timeout){
$scope.btns = [{}, {}, {}];
$scope.values = [];
$scope.btnChange = function(event, model, val){
_this = angular.element(event.target);
x = _this.prop("checked");
if(x){
model.push(val);
}else{
index = model.indexOf(val);
model.splice(index, 1);
}
};
ids = [1, 2, 3];
$timeout(function() {
for(x=0;x<ids.length;x++){
angular.element("#check-"+ids[x]).trigger("click");
}
}, 1000);
}]);
</script>
</body>
</html>
这里是plunker:http://plnkr.co/edit/7DpCvkKLlKhRc3YwFTq0?p=info
PS
如果您发表评论或删除这不会发生angular.element触发。如果有人可以提供一个代码,通过循环触发复选框上的点击事件。 那么这将是伟大的
这不是事情的角度是如何工作的;检查这个帖子上的这个答案http://stackoverflow.com/questions/14514461/how-to-bind-to-list-of-checkbox-values-with-angularjs。 – Walfrat
这篇文章并没有真正回答我的问题。我想要的是我的复选框在页面加载时通过触发器被点击 –
不,你不想这样做,你希望你的复选框在加载时被检查,为此你只需要在控制器上设置模型值,angular会映射它复选框。 – Walfrat