[英]Strange behaviour when checking/unchecking all items in a list of checkboxes
在复选框列表中,应该可以通过按下按钮来选中/取消选中所有项目。 但是以下代码仅部分起作用:
<div ng-controller="Controller">
<button ng-click="setCheckStateForAll(true)">All</button>
<button ng-click="setCheckStateForAll(false)">None</button>
<ul>
<li ng-repeat="item in items">
<input type="checkbox" id="{{item.name}}" ng-checked="item.isChecked"/>
<label for="{{item.name}}">{{item.name}}</label>
</li>
</ul>
</div>
function Controller($scope) {
$scope.items = [
{ name: "A", isChecked: true },
{ name: "B", isChecked: true },
{ name: "C", isChecked: true },
{ name: "D", isChecked: true },
{ name: "E", isChecked: true }
];
$scope.setCheckStateForAll = function(value) {
for (var i = 0; i < $scope.items.length; i++)
$scope.items[i].isChecked = value;
};
}
默认情况下,所有项目都被选中,并且如果单击“无”,则所有项目都将按预期取消选择。
但是,如果然后选中“ A”并再次单击“无”,则“ A”保持选中状态(但不应选中)。 但是,如果单击“所有”,则将检查所有项目。
怎么了
代替ng-checked
使用ng-model
绑定到ìtem.isChecked
。 ngModel提供双向绑定,而ng-checked不提供双向绑定。
<input type="checkbox" id="{{item.name}}" ng-model="item.isChecked"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.