ngRepeat过滤器,复选框选择父子vise vesa

时间:2016-10-21 07:13:35

标签: angularjs angular-filters

的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>

1 个答案:

答案 0 :(得分:1)

您应该为它创建一个函数,以处理更改活动。尝试使用此 -

   <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