angular實(shí)現(xiàn)導(dǎo)航菜單切換
本文實(shí)例為大家分享了angular實(shí)現(xiàn)導(dǎo)航菜單切換的具體代碼,供大家參考,具體內(nèi)容如下
js部分:
$scope.navArr=[{
? ? ? ? task:{
? ? ? ? ? ? title: "我的任務(wù)",
? ? ? ? ? ? showAdd: true,
? ? ? ? ? ? data:[
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? title:'我的設(shè)計(jì)院',
? ? ? ? ? ? ? ? ? ? id:1,
? ? ? ? ? ? ? ? ? ? hasChild:false,
? ? ? ? ? ? ? ? ? ? active:true,
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? title:'我加入的設(shè)計(jì)院',
? ? ? ? ? ? ? ? ? ? id:2,
? ? ? ? ? ? ? ? ? ? hasChild:true,
? ? ? ? ? ? ? ? ? ? active:false,
? ? ? ? ? ? ? ? ? ? data:[
? ? ? ? ? ? ? ? ? ? ? ? {title:"設(shè)計(jì)院1",active:true},
? ? ? ? ? ? ? ? ? ? ? ? {title:"設(shè)計(jì)院2",active:false}
? ? ? ? ? ? ? ? ? ? ]
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? title:'驗(yàn)證消息',
? ? ? ? ? ? ? ? ? ? id:3,
? ? ? ? ? ? ? ? ? ? hasChild:false,
? ? ? ? ? ? ? ? ? ? active:false,
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? title:'我參與的設(shè)計(jì)院',
? ? ? ? ? ? ? ? ? ? id:3,
? ? ? ? ? ? ? ? ? ? hasChild:true,
? ? ? ? ? ? ? ? ? ? active:false,
? ? ? ? ? ? ? ? ? ? data:[
? ? ? ? ? ? ? ? ? ? ? ? {title:"設(shè)計(jì)院3",active:true},
? ? ? ? ? ? ? ? ? ? ? ? {title:"設(shè)計(jì)院4",active:false}
? ? ? ? ? ? ? ? ? ? ]
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ]
? ? ? ? }
? ? ? ? }];
? ??
? ? $scope.showItem=false;
? ? $scope.showId=null;
? ? //給菜單項(xiàng)添加事件
? ? $scope.changNavMenu=function(item,arr,hasChild){
? ? ? ? for(let i of arr){
? ? ? ? ? ? if(i==item){
? ? ? ? ? ? ? ? i.active=true;
? ? ? ? ? ? ? ? showNav(hasChild,i.id)
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? i.active=false;?
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? function showNav(hasChild,id){
? ? ? ? if($scope.showId!=id){
? ? ? ? ? ? $scope.showItem=false;
? ? ? ? ? ? $scope.showId=id;
? ? ? ? }
? ? ? ? if(hasChild){
? ? ? ? ? ? if($scope.showItem==false){
? ? ? ? ? ? ? ? $scope.showItem=true
? ? ? ? ? ? }else if($scope.showItem==true){
? ? ? ? ? ? ? ? $scope.showItem=false
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? // 給二級(jí)菜單添加點(diǎn)擊事件
? ? $scope.changTwoNav=function(item,arr){
? ? ? ? for(let i of arr){
? ? ? ? ? ? if(i==item){
? ? ? ? ? ? ? ? i.active=true;
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? i.active=false;?
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? event.stopPropagation();
? ? }html片段:
<div class="two_level_box">
? <!-- title -->
? <p class="menu-title">{{navArr[0].task.title}}</p>
? <!-- add -->
? <div class="add-pro-btn" ng-if="navArr[0].task.showAdd">
? ? <span>+ 快速立項(xiàng)</span>
? </div>
? <!--一級(jí)菜單-->
? <ul class="navMenu">
? ? <li ng-click="changNavMenu(item,navArr[0].task.data,item.hasChild)" ng-class="{active:item.active}" ng-repeat="item in navArr[0].task.data">
? ? ? <a href=""><b ng-class="{b_active:showItem&&item.active}" ng-if="item.hasChild"></b> {{item.title}}</a>
? ? ? <ul class="subMenu closeSubMenu" ng-class="{true:'subMenu',false:'closeSubMenu'}[showItem&&item.active]">
? ? ? ? <li ng-if="item.hasChild" ng-class="{active:i.active&&item.active}" ng-click="changTwoNav(i,item.data)" ng-repeat="i in item.data">
? ? ? ? ? ? <a href="">{{i.title}}</a>
? ? ? ? </li>
? ? ? </ul>
? ? </li>
? </ul>
? </ul>
</div>css:
.two_level_box{
? float:left;
? width: 139px;
? height: 100%;
? background: #fff;
}
.menu-title{
? margin:10px;
}
.add-pro-btn{
? cursor: pointer;
? margin:10px;
}
.add-pro-btn span{
? display: inline-block;
? width:100%;
? text-align: center;
? border:1.5px solid #EE6133;
? border-radius: 20px;
? padding:2px;
? color:#EE6133;
}
.navMenu>li>a{
? margin:8px 0;
? padding:10px;
}
.navMenu>li{
? margin:8px 0;
? padding:0;
}
.navMenu li a{
? color:#000;
}
.navMenu>.active>a{
? color:#EE6133;
}
.subMenu .active{
? background-color: #FACFC1;
? border-right:2px solid #EE6133;
}
.closeSubMenu{
? display: none;
}
.subMenu li{
? padding:5px 0;
? border-right:2px solid #fff;
}
.subMenu li a{
? padding-left:30px;
}
.navMenu b{
? display: inline-block;
? width:8px;
? height:0;
? border-left:5px solid #A9A9A9;
? border-top:4px solid transparent;
? border-bottom:4px solid transparent;
}
.navMenu .b_active{
? border-top:5px solid #A9A9A9;
? border-left:4px solid transparent;
? border-right:4px solid transparent;
}實(shí)現(xiàn)效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Angular.js自動(dòng)化測(cè)試之protractor詳解
Protractor是一個(gè)建立在WebDriverJS基礎(chǔ)上的端到端(E2E)的AngularJS JavaScript Web應(yīng)用程序測(cè)試框架,下面這篇文章主要給大家介紹了angular.js自動(dòng)化測(cè)試之protractor的相關(guān)資料,需要的朋友可以參考下。2017-07-07
詳解Webstorm 下的Angular2.0開(kāi)發(fā)之路(圖文)
這篇文章主要介紹了詳解Webstorm 下的Angular2.0開(kāi)發(fā)之路(圖文) ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
AngularJS中的包含詳細(xì)介紹及實(shí)現(xiàn)示例
本文主要介紹AngularJS 包含,這里對(duì)相關(guān)資料做了詳細(xì)整理,并附代碼實(shí)例和效果圖,有需要的朋友可以看一下2016-07-07
AngularJS ng-repeat指令及Ajax的應(yīng)用實(shí)例分析
這篇文章主要介紹了AngularJS ng-repeat指令及Ajax的應(yīng)用,結(jié)合實(shí)例形式分析了ng-repeat指令的功能及ajax請(qǐng)求交互相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
將angular-ui的分頁(yè)組件封裝成指令的方法詳解
這篇文章主要給大家介紹了將angular-ui的分頁(yè)組件封裝成指令的方法,文中介紹的非常詳細(xì),相信會(huì)對(duì)大家的學(xué)習(xí)或者工作覺(jué)有一定的參考價(jià)值,需要的朋友下面來(lái)一起看看吧。2017-05-05
AngularJS學(xué)習(xí)第二篇 AngularJS依賴(lài)注入
這篇文章主要為大家詳細(xì)介紹了AngularJS學(xué)習(xí)第二篇,理解什么是AngularJS依賴(lài)注入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
AngularJS中取消對(duì)HTML片段轉(zhuǎn)義的方法例子
這篇文章主要介紹了AngularJS中取消對(duì)HTML片段轉(zhuǎn)義的方法例子,在一些需要顯示HTML的地方,就要取消AngularJS的轉(zhuǎn)義,本文就介紹了這種方法,需要的朋友可以參考下2015-01-01

