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