angular 双ng-repeat显示隐藏

需求是在嵌套的列表中,实现对应列表点击的,显示隐藏。

单个很好写like this:

<!DOCTYPE html>
<html lang="en" ng-app='myApp'>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src='angular.min.js'></script>
</head>
<body>
  <div ng-controller="ListCtrl" >
      <button ng-click='changeState()'>
        click me
      </button>
       <div ng-show='toshow'>you want to show/hide content</div>
</div>
<script type="text/javascript">
   var app = angular.module('myApp',[]);
    app.controller('ListCtrl', ['$scope', function($scope) {
      $scope.toshow = false;
       $scope.changeState = function(){
           $scope.toshow = ! $scope.toshow;
       } 
  }]);
</script>
</body>
</html>

显示效果如下: 

                      

嵌套的列表如下:

<!DOCTYPE html>
<html lang="en" ng-app='myApp'>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src='angular.min.js'></script>
</head>
<body>
  <ul ng-controller="ListCtrl" >
  <li class="sub{{$index}}"  ng-repeat="msg in items" ng-init='parent = $index'>
     {{ msg.name }}
      <div ng-repeat=' item in msg' ng-init='child = $index'>
            <button  ng-click="remove(parent,child)" ng-show='sub == parent && sup == child'>you want other click show this{{$index}}</button>
            <div ng-show='sub != parent || sup != child'>
                {{$index}};
               <button    ng-click="remove(parent,child)" >you want first show{{$index}}</button>
           </div>
      </div>
  </li>
</ul>

<script type="text/javascript">
    var app = angular.module('myApp',[]);
   app.controller('ListCtrl', ['$scope', function($scope) {
  $scope.items = [
               {id:215,name:'柚数据简介'},{id:84,name:'大数据'},{id:201,name:'数据可视化'},
               {id:189,name:'集群'},{id:191,name:'运算框架'},{id:202,name:'费用预充值'},
               {id:208,name:'用户账户'},{id:212,name:'工单'}
             ]
              $scope.sub = 'none'; //随意写个不是数字的就可以
              $scope.sup = 'none';

  $scope.remove = function(par,chl) {
          $scope.sub = par;   //保持与parent/child相等就显示
          $scope.sup = chl;

  };
}]);
 </script>
</body>
</html>

  达到效果如下:(点击实现显示)

                                           

  这个还是比较局限只能保持单一的显示,并且不能隐藏;

  需要可以借鉴,有更好的方法请欢迎留言指正(博客园---嗨海)。

 

posted @ 2017-05-17 17:20  嗨海  阅读(220)  评论(0编辑  收藏  举报