在复选框列表中勾选/取消勾选所有项目时的奇怪行为
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;
};
}
↗jsFiddle
默认情况下选中所有项目,如果单击"None",则所有项目按预期取消选中。
但是如果"A"被选中并且再次点击"None","A"保持选中状态(但它不应该)。但如果点击"全部",则选中所有项目。
怎么了?
用ng-model
绑定ìtem.isChecked
代替ng-checked
。ngModel提供双向绑定,而ng-checked不提供。
<input type="checkbox" id="{{item.name}}" ng-model="item.isChecked"/>
JSFIDDLE演示
相关文章:
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- 当在Ember中点击一个项目时,我如何将一个活动类添加到项目列表中
- 在javascript中搜索项目列表的性能
- 如何在角度js的自动完成下拉列表中对项目列表(按字母顺序)进行排序
- 从项目列表Jquery中仅选择(显示:块)元素
- 使用 JQuery 复选框筛选项目列表
- 如何在Javascript中设置随机生成的项目列表的样式
- 如何无限循环项目列表
- 将项目列表馈送到3列布局中
- Polymer 1.0:管理简单项目列表的最佳实践
- 从select创建项目列表/数组
- 渲染Backbone.js中项目列表中的项目
- 如何将特定项目信息链接到 emberjs 中项目列表中的模板
- 如何遍历项目列表并将其数据值推送到数组中
- NodeJS:如何使用异步.js来处理数据库中的项目列表
- 挖空 JS 构建项目列表
- 通过指定的文本检查项目列表 /w Jquery
- 如何制作一个项目列表,可以使用 Angular JS 单独切换
- 将单词“and”放在项目列表的文本中
- 优化显示简单项目列表的模型/视图