我试图实现的是在检查" master"时检查属于ng-repeat
循环迭代的一些复选框。复选框。到目前为止我在视图中的代码:
<div ng-app="CheckAllModule">
<div ng-controller="checkboxController">
<ul ng-repeat="s in struct">
<li><strong>{{s}} item</strong>
<input type="checkbox" ng-checked="x1 && x2 && x3" ng-model="selectedAll" ng-click="checkAll()" />
</li>
<label>Subitem A
<input type="checkbox" ng-checked="chk" ng-model="x1" />
</label>
<label>Subitem B
<input type="checkbox" ng-checked="chk" ng-model="x2" />
</label>
<label>Subitem C
<input type="checkbox" ng-checked="chk" ng-model="x3" />
</label>
</ul>
</div>
</div>
第一个复选框是&#34; master&#34;并且应该将自己的状态强加于&#34;奴隶&#34; (接下来的三个复选框),无论他们以前的状态如何。
关于奴隶复选框,应该检查它们&amp;独立地取消选中。但如果同时检查三个,那么主人也应该。只要不检查其中一个,主人就不应该这样做。
我的控制员:
var app = angular.module("CheckAllModule", []);
app.controller("checkboxController", function ($scope) {
$scope.struct = ['First', 'Second'];
$scope.checkAll = function () {
if ($scope.selectedAll) {
$scope.chk = true;
} else {
$scope.chk = false;
}
};
});
答案 0 :(得分:2)
作为一个注释,你应该总是尝试使用点表示法绑定到某个东西。
<ul ng-repeat="s in struct track by $index">
<li>
<strong>{{s.Item}} item</strong>
<input type="checkbox" ng-click="checkAll(s.selectedAll,$index)" ng-model="s.selectedAll" ng-checked="s.x1 && s.x2 && s.x3" />
</li>
<label>Subitem A
<input type="checkbox" ng-checked="s.chk" ng-model="s.x1" />
</label>
<label>Subitem B
<input type="checkbox" ng-checked="s.chk" ng-model="s.x2" />
</label>
<label>Subitem C
<input type="checkbox" ng-checked="s.chk" ng-model="s.x3" />
</label>
</ul>
你在这里的情况是你的重复绑定到一个字符串列表。您应该知道,当在每个项目上重复一个集合时,它将拥有它自己的范围并独立地维护它们的值。这很难做到,因为您无法将这些值添加到字符串中(您需要绑定到可以展开的对象)。
我已做出允许进行此特定设置的调整。它应该是令人满意的,因为已经做了微小的改变。