Select checkbox ng-如果父复选框被选中,父子都是不可数的差异。大批
Select checkbox ng-if parent checkbox is slected, both parent & child is uncountable diff. array
结构是
$scope.divisions = [
{ Description: 'test1', Id: 1 },
{ Description: 'test2', Id: 2 },
{ Description: 'test3', Id: 3 },
{ Description: 'test4', Id: 4 },
{ Description: 'test5', Id: 5 }
];
$scope.subd = [
{ Description: 'sub1', Id: 7 },
{ Description: 'sub2', Id: 8 },
{ Description: 'sub3', Id: 9 }
];
如果选择test1 subd应该显示在那个下面,subd可以选择。
我只想捕获分部和子部的id。
在 Plunker 上查看 http://plnkr.co/edit/hjb5HTITyJelqdjLN5h2?p=preview
更新
如果您希望只有在选择一个或多个子项时才选择父项,那么您可以考虑禁用父项输入并根据选定的子项更新它。
同时将它们存储在一个新变量 $scope.selected
中作为 json。
<ul class="radio-check-group">
<li ng-repeat="d in divisions">
<input disabled type="checkbox" ng-model="d.selected" class="" id="{{'div' + d.Id}}" name="selectedDivisions[]" />
<label for="div{{$index}}">{{d.Description}}</label>
<ul>
<li ng-repeat="s in d.subd">
{{$parent.$index}}
<input type="checkbox" ng-change="updateParent(d)" ng-model="s.selected" class="" id="{{'div' + d.Id}}" name="selectedsubd[]" />
<label for="div{{$index}}">{{s.Description}}</label>
</li>
</ul>
</li>
</ul>
和控制器函数:
function initializeDivisionSubd() {
angular.forEach($scope.divisions, d => {
d.subd = angular.copy($scope.subd);
})
};
$scope.selected = [];
initializeDivisionSubd();
$scope.updateParent = (parent) => {
parent.selected = !!parent.subd.find(s => s.selected);
$scope.selected = angular.toJson($scope.divisions.filter(d => d.selected).map(d => {
return {
Id: d.Id,
subd: d.subd.filter(sd => sd.selected).map(sd => {
return {
Id: sd.Id
}
})
}
}));
结构是
$scope.divisions = [
{ Description: 'test1', Id: 1 },
{ Description: 'test2', Id: 2 },
{ Description: 'test3', Id: 3 },
{ Description: 'test4', Id: 4 },
{ Description: 'test5', Id: 5 }
];
$scope.subd = [
{ Description: 'sub1', Id: 7 },
{ Description: 'sub2', Id: 8 },
{ Description: 'sub3', Id: 9 }
];
如果选择test1 subd应该显示在那个下面,subd可以选择。
我只想捕获分部和子部的id。
在 Plunker 上查看 http://plnkr.co/edit/hjb5HTITyJelqdjLN5h2?p=preview
更新
如果您希望只有在选择一个或多个子项时才选择父项,那么您可以考虑禁用父项输入并根据选定的子项更新它。
同时将它们存储在一个新变量 $scope.selected
中作为 json。
<ul class="radio-check-group">
<li ng-repeat="d in divisions">
<input disabled type="checkbox" ng-model="d.selected" class="" id="{{'div' + d.Id}}" name="selectedDivisions[]" />
<label for="div{{$index}}">{{d.Description}}</label>
<ul>
<li ng-repeat="s in d.subd">
{{$parent.$index}}
<input type="checkbox" ng-change="updateParent(d)" ng-model="s.selected" class="" id="{{'div' + d.Id}}" name="selectedsubd[]" />
<label for="div{{$index}}">{{s.Description}}</label>
</li>
</ul>
</li>
</ul>
和控制器函数:
function initializeDivisionSubd() {
angular.forEach($scope.divisions, d => {
d.subd = angular.copy($scope.subd);
})
};
$scope.selected = [];
initializeDivisionSubd();
$scope.updateParent = (parent) => {
parent.selected = !!parent.subd.find(s => s.selected);
$scope.selected = angular.toJson($scope.divisions.filter(d => d.selected).map(d => {
return {
Id: d.Id,
subd: d.subd.filter(sd => sd.selected).map(sd => {
return {
Id: sd.Id
}
})
}
}));