ng 重复过滤器,Checkbox select parent child 反之亦然
ngRepeat filter, Checkbox select parent child vise vesa
Json
$scope.tmp = {
'ax':{
label:'AX',
checked:false
},
'by':{
label:'BY',
linkTo:'ax',
checked:false
},
'xy':{
label:'BY',
linkTo:'by',
checked:false
}
}
我需要检查父项是否检查了它的任何子项,如果选择了父项,则在 linkTo 属性的帮助下也选择了子项。
我试过下面的代码
<div ng-repeat='(k,v) in tmp'>
<input type="checkbox" ng-model="tmp[k].checked" ng-change="v.linkTo != undefined ? tmp[k].checked=tmp[v.linkeTo].checked:{tmp[k].checked = (tmp | filter : {linkTo:k}).checked }">Linked With {{obj.label}}
</div>
您应该为它创建一个函数来处理更改 activity。尝试使用这个 -
<div ng-app ng-controller="TController">
<div ng-repeat='(k,v) in tmp'>
<input type="checkbox" ng-model="tmp[k].checked" ng-change="change(v.linkTo,k)">{{k}} Linked With {{v.linkTo}} <br />
</div>
</div>
还有这样的方法
$scope.change=function(linkto,k){
if(linkto!=undefined){
$scope.tmp[linkto].checked=$scope.tmp[k].checked;
}
else{
angular.forEach($scope.tmp, function (value, key) {
if (value.linkTo === k) {
value.checked=$scope.tmp[k].checked;
}
})
}
}
试试这个Js Fiddel
Json
$scope.tmp = {
'ax':{
label:'AX',
checked:false
},
'by':{
label:'BY',
linkTo:'ax',
checked:false
},
'xy':{
label:'BY',
linkTo:'by',
checked:false
}
}
我需要检查父项是否检查了它的任何子项,如果选择了父项,则在 linkTo 属性的帮助下也选择了子项。
我试过下面的代码
<div ng-repeat='(k,v) in tmp'>
<input type="checkbox" ng-model="tmp[k].checked" ng-change="v.linkTo != undefined ? tmp[k].checked=tmp[v.linkeTo].checked:{tmp[k].checked = (tmp | filter : {linkTo:k}).checked }">Linked With {{obj.label}}
</div>
您应该为它创建一个函数来处理更改 activity。尝试使用这个 -
<div ng-app ng-controller="TController">
<div ng-repeat='(k,v) in tmp'>
<input type="checkbox" ng-model="tmp[k].checked" ng-change="change(v.linkTo,k)">{{k}} Linked With {{v.linkTo}} <br />
</div>
</div>
还有这样的方法
$scope.change=function(linkto,k){
if(linkto!=undefined){
$scope.tmp[linkto].checked=$scope.tmp[k].checked;
}
else{
angular.forEach($scope.tmp, function (value, key) {
if (value.linkTo === k) {
value.checked=$scope.tmp[k].checked;
}
})
}
}
试试这个Js Fiddel