我有一个与ng-model绑定的复选框:
<input type="checkbox" ng-change="toggleAll(globalChecked)" ng-model="globalChecked">
而toggleAll将获取globalChecked值并处理我的控制器中的其他逻辑:
$scope.toggleAll = function(val) {
if ($scope.objects == undefined) {
return
}
for (var i = 0; i < $scope.objects.length; ++i) {
$scope.objects[i].checked = val;
}
}
然而,对于第一次,当我单击复选框时,toggleAll被调用但val(或globalChecked值)仍为false。
我想知道我在这里错过了什么吗?
答案 0 :(得分:0)
似乎你没有错过任何东西,它对我来说很好。这是一个样本plunker:
http://plnkr.co/edit/BbVs7pEEFGTunXVkxCMj?p=preview
如果第一次没有效果,请务必初始化代码中第一个复选框(ng-model="globalChecked"
)的值。
<input type='checkbox' ng-click="checkAll(toplevel)" ng-model="toplevel">
<div ng-repeat="obj in objects">
<input type='checkbox' ng-model="obj.checked">
</div>
$scope.objects = [];
for(var i = 0; i < 100; i++) {
if (!$scope.objects[i])
$scope.objects[i] = {checked: false};
}
$scope.checkAll = function(val){
for(var i = 0; i < 100; i++){
console.log($scope.objects[i]);
$scope.objects[i].checked = val;
}
}