应项目的不同所以菜单的层级也不固定,所以在这里我写了5层菜单,哈哈。首先是html代码。
//菜单html代码
<ul class="page-sidebar-menu"><li ng-repeat="menu in menus"><a ui-sref={{menu.router}} style="cursor: pointer" ng-click="getMenuName([menu])"><i class={{menu.class}}></i><span class="title">{{menu.name}}</span><span class={{menu.span}}></span></a><ul class="sub-menu"><li ng-repeat="child in menu.children"><a ui-sref="{{child.router}}" style="cursor: pointer" ng-click="getMenuName([menu,child])"><i class={{child.class}}></i> {{child.name}}<span class={{child.span}}></span></a><ul class="sub-menu"><li ng-repeat="third in child.thirds"><a ui-sref={{third.router}} style="cursor: pointer" ng-click="getMenuName([menu,child,third])"><i class="icon-cogs"></i> {{third.name}}<span class={{third.span}}></span></a><ul class="sub-menu"><li ng-repeat="four in third.fourth"><a ui-sref={{four.router}} style="cursor: pointer" ng-click="getMenuName([menu,child,third,four])"><i class={{four.class}}></i>{{four.name}}<span class={{four.span}}></span></a><ul class="sub-menu"><li ng-repeat="five in four.fifth"><a ui-sref={{five.router}} style="cursor: pointer" ng-click="getMenuName([menu,child,third,four,five])">{{five.name}}<span class={{five.span}}></span></a></li></ul></li></ul></li></ul></li></ul></li></ul>
//面包屑html代码
<div><ul class="breadcrumb"><li ng-repeat="breadcrumb in breadcrumbs"><i class="icon-home breadcrumb-home" ng-if="$index<=0"></i><a href="#" class="breadcrumb-text">{{breadcrumb.name}}</a><i class="icon-angle-right" ng-if="$index!=breadcrumbs.length-1"></i></li></ul></div>
在相对应控制菜单的controller里调用菜单数据,并完成页面面包屑的操作。
//获取菜单数据
$scope.getMenulist = function () {$http.get(ctx+"/app/common/menuList.json").success(function (data) {$scope.menus = data;$rootScope.menus = data;})};$scope.getMenulist();
//面包屑
$scope.getMenuName = function (menuList) {/* [menu,child,third] */if (menuList.length > 0 && menuList[menuList.length - 1].router) {$rootScope.breadcrumbs = menuList;$scope.breadcrumbs = $rootScope.breadcrumbs;}};