我正在尝试使用一个函数来检查复选框树中的所有复选框。 它是成功检查和取消选中,但是如果我选择一个复选框然后按全部检查,并取消选中,则单个复选框保持原样冻结
<fieldset id="field3">
<table>
<tr ng-repeat="e in empdepts | groupBy:'dep_LDesc'">
<td>
<label ng-click="showContent = !showContent"></label>
<details ng-open="showContent">
<summary>
<input type="checkbox" ng-model="chk" /> {{e[0].dep_LDesc}}</summary>
<div ng-repeat="employee in e">
<input type="checkbox" ng-checked="chk"> {{employee.Sname}}
</div>
</details>
</td>
</tr>
</table>
<hr />
<table>
<tr>
<td>
<input type="checkbox" ng-model="all" ng-click="selectall(all)" /> All Departments</td>
</tr>
<tr>
<td>
<input type="checkbox" ng-model="self" /> Self Services </td>
</tr>
</table>
</fieldset>
$scope.selectall = function (all) {
if (all) {
$scope.chk = true;
}
else
{
$scope.chk = false;
}
}
LoadEmpDepts();
function LoadEmpDepts() {
Assignments.getempdepts().then(function (response) {
$scope.empdepts = (response.data);
console.log($scope.empdepts);
})
}
答案 0 :(得分:2)
您需要为单个元素设置checked属性,因此选项是在数组的每个元素中都有一个checked属性。
所以每当选中复选框时都会更新属性。并且在检查所有内容时,将所有元素选中属性设为true。
{{1}}
例如,
<强> DEMO 强>