【发布时间】:2016-01-28 14:17:54
【问题描述】:
我对网络开发很陌生,并且尝试了角度,所以可能会有很多错误.. 基本上我在 ng-repeat 中有一个 ng-repeat,我需要在父级重复中的复选框的子级重复中设置一个模型变量。 我不知道如何从父级访问子级中的模型。我试过给出一个 [$index] 但它不起作用。
这是我的 HTML。我有一个父复选框,它应该更改子复选框 onclick 的 clicked 布尔变量。
<li ng-repeat="set in wordlistSets" ng-controller="setController">
<div class="parentSelector">
<span class="selectorLeft">
<p> blah </p>
</span>
<span class="selectorRight">
<input type="checkbox" name="sets" ng-click="selectAll()">
</span>
</div>
<div ng-repeat="wordlist in set.content" ng-click="checked[parent.$index][$index] = !checked[parent.$index][$index]">
<span class="selectorLeft">
<p>more blah</p><br>
<p>extra blah</p>
</span>
<span class="selectorRight">
<input type="checkbox" name="wordLists" ng-click="checked[parent.$index][$index] = !checked[parent.$index][$index]" ng-model="checked[parent.$index][$index]">
</span>
</div>
“SelectAll()”函数应该遍历单词列表并相应地切换选中的变量。我不能使用 angulars ng-checked,因为我需要它来切换并且始终不具有与父复选框相同的状态,因为它也可以通过在 div 本身上单击来设置。
这里是控制器。
myApp.controller("setController", function MyController($scope) {
$scope.parentChecked = false;
$scope.selectAll = function() {
for (var i = 0; i < $scope.set.content; i++) {
if ($scope.parentChecked) {
$scope.checked[$scope.index][i] = true;
} else {
$scope.checked[$scope.index][i] = false;
}
}
}
这是一张供参考的图片。单击粉红色选择器或黑色父选择器应勾选复选框。 Picture of page setup
提前感谢您的帮助! :D
【问题讨论】:
-
对于每个单独的复选框,使用
ng-change调用控制器函数来迭代$scope.checked以查看是否需要检查父级。少量数据样本将有助于解决问题,因此可以由其他人进行测试。更好的是,如果您可以将其复制到 plunker 演示,并提供一些数据。真的不需要任何CSS
标签: angularjs checkbox controller ng-repeat angular-ngmodel