我有一个包含 3 个复选框的表单:“全选”、“选项 1”和“选项 2”。
<form id="selectionForm">
<input type="checkbox" ng-model="selectAll" >Select all
<br>
<input type="checkbox" ng-checked="selectAll" checked>Option 1
<br>
<input type="checkbox" ng-checked="selectAll">Option 2
</form>
在初始页面加载时,我希望仅 选项 1 被选中。然后,如果选中了全选复选框,它应该会自动选中选项 1 和选项 2,以便全部选中。
问题是在初始页面加载时对 ng-checked="selectAll"进行评估,这会覆盖我最初仅检查选项 1(最初 selectAll = false)的尝试,因此未选择任何内容。
这似乎是一个解决起来很简单的问题,但我想不出解决方案...在此先感谢您的任何见解或建议!
最佳答案
另一种方法是为选项使用模型,在模型中设置默认选择,并让 Controller 处理全选逻辑。
angular.module("app", []).controller("ctrl", function($scope){
$scope.options = [
{value:'Option1', selected:true},
{value:'Option2', selected:false}
];
$scope.toggleAll = function() {
var toggleStatus = !$scope.isAllSelected;
angular.forEach($scope.options, function(itm){ itm.selected = toggleStatus; });
}
$scope.optionToggled = function(){
$scope.isAllSelected = $scope.options.every(function(itm){ return itm.selected; })
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"> </script>
<div ng-app="app" ng-controller="ctrl">
<form id="selectionForm">
<input type="checkbox" ng-click="toggleAll()" ng-model="isAllSelected">Select all
<br>
<div ng-repeat = "option in options">
<input type="checkbox" ng-model="option.selected" ng-change="optionToggled()">{{option.value}}
</div>
</form>
{{options}}
</div>
关于html - Angular 复选框 "Select All"功能,最初只选中一个框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27451954/