angularjs(ng-repeat和filter)生成多级菜单

需求如下:

后端通过数据库生成无序的数组,传到前端,数据结构如下(pid即parentId,如本级的pid为4,则它上一级的menu_id为4):

       [
          {pid:1,menu_id:7},
          {pid:4,menu_id:9},
          {pid:3,menu_id:8},
          {pid:0,menu_id:4},
          {pid:0,menu_id:3},
          {pid:4,menu_id:10},
          {pid:0,menu_id:1},
          {pid:1,menu_id:11},
          {pid:8,menu_id:15}
      ];

前端实现如下

<head>
<meta charset="utf-8">
<script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp"  ng-controller="myCtrl">
    <div ng-repeat="x in items | filter:{'pid':0}  | orderBy: 'menu_id' ">
  一级菜单:{{x}}
      <div ng-repeat="y in items | orderBy : ['pid','menu_id']| filter:{'pid' : x.menu_id}">
  二级菜单:{{y}}
        <div ng-repeat="z in items | orderBy : ['pid','menu_id']| filter:{'pid' : y.menu_id}">
   三级菜单:{{z}}</div>
      </div>
    </div>
</div>
<script>
	var app = angular.module('myApp',[]);
	app.controller('myCtrl', function($scope) {
       $scope.items = [
          {pid:1,menu_id:7},
          {pid:4,menu_id:9},
          {pid:3,menu_id:8},
          {pid:0,menu_id:4},
          {pid:0,menu_id:3},
          {pid:4,menu_id:10},
          {pid:0,menu_id:1},
          {pid:1,menu_id:11},
          {pid:8,menu_id:15}
      ];

</script>

</body>

结果如下:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值