我有一个父复选框列表,其中包含每个父复选框内的子复选框列表。
使用父级复选框,数据信息="类别"属性是附加的,带有子复选框的data-info =" name"属性附后。
通过选中和取消选中父复选框,子复选框列表分别可见和隐藏
我想要的是,当我取消选中父复选框时,所有subchkbx也应该取消选中。仅对未检查的方案进行取消选中。
另外,我想访问checked复选框的data-info属性。如何在检查复选框时获取此属性。
目前我在jquery的帮助下实现了这一目标。
答案 0 :(得分:0)
您可以将复选框绑定到父项上的checked属性,然后设置$watch
:当checked属性更改时,更新子项的checked属性。
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.parents = [
{
name: 'parent1',
checked: false,
children: [{
name: 'child1',
checked: false
},
{
name: 'child2',
checked: false
}]
}];
angular.forEach($scope.parents, function(item,index) {
$scope.$watchCollection('parents[' + index + ']', function(newVal) {
if (newVal) {
angular.forEach(newVal.children, function(item, index) {
item.checked = newVal.checked;
});
}
});
});
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
<div ng-repeat="parent in parents">
<input type="checkbox" ng-model="parent.checked" /> {{parent.name}}
<ul>
<li ng-repeat="child in parent.children">
<input type="checkbox" ng-model="child.checked" /> {{child.name}}
</li>
</ul>
</div>
</div>
&#13;