2016-06-28 69 views
-2

我想要做的是通過使用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

回答

1

你可以通過設置默認值的複選框的角度的方式做到這一點:

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


UPDATE:

我還是調試你的JS。 Here是你的功能工作的蹲點。我已經在循環中使用了y(x已經定義)並且改變了循環的條件。

無論如何,我會建議你使用角度做... :-)

+0

你的建議是,ng-click函數不會觸發,我想通過循環來觸發它 –

+0

更新了我的回答。我提供了一個應該更正你的JS功能的重擊器:) – Mistalis

+0

太棒了!你搖滾!你是唯一能解決我棘手問題的人。那麼究竟發生了什麼?看起來像你剛纔添加的「var」 –