为什么我的角色脚本运行无限循环?

问题描述:

我想要做的是通过使用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触发。如果有人可以提供一个代码,通过循环触发复选框上的点击事件。 那么这将是伟大的

+1

这不是事情的角度是如何工作的;检查这个帖子上的这个答案http://stackoverflow.com/questions/14514461/how-to-bind-to-list-of-checkbox-values-with-angularjs。 – Walfrat

+0

这篇文章并没有真正回答我的问题。我想要的是我的复选框在页面加载时通过触发器被点击 –

+1

不,你不想这样做,你希望你的复选框在加载时被检查,为此你只需要在控制器上设置模型值,angular会映射它复选框。 – Walfrat

你可以通过设置默认值的复选框的角度的方式做到这一点:

当您使用ng-model,在你的控制器,只需设置deanarmadatrue


UPDATE:

我还是调试你的JS。 Here是你的功能工作的蹲点。我已经在循环中使用了y(x已经定义)并且改变了循环的条件。

无论如何,我会建议你使用角度做... :-)

+0

你的建议是,ng-click函数不会触发,我想通过循环来触发它 –

+0

更新了我的回答。我提供了一个应该更正你的JS功能的重击器:) – Mistalis

+0

太棒了!你摇滚!你是唯一能解决我棘手问题的人。那么究竟发生了什么?看起来像你刚才添加的“var” –