2016-03-08 127 views
0

我想要實現的第一個視圖是基於一些子視圖並且主視圖是抽象的 - 僅重定向到第一個子視圖。我實現了兩個導航欄。一個用於導航普通視圖,另一個僅導航到主子視圖。我想知道當主子視圖中的一個主動子視圖處於活動狀態時,如何將主導航欄設置爲在家中活動。當任何子視圖處於活動狀態時,AngularJs navbar父視圖應該處於活動狀態

下面的代碼頂部酒吧navbar。主頁的任何子視圖處於活動狀態時,主頁按鈕應處於活動狀態(home.a,home.b)。目前Home從未活躍。

<ul class="nav navbar-nav"> 
    <li ui-sref-active="active"><a ui-sref="home">Home</a></li> //here i can use home.a but when i will navigate to home.b it ll be inactive 
    <li ui-sref-active="active"><a ui-sref="about">About</a></li> 
    <li ui-sref-active="active"><a ui-sref="contact">Contact</a></li> 
</ul> 

子視圖導航欄工作正確每當我對某個子的觀點正確的按鈕激活

<ul class="nav nav-pills nav-stacked"> 
    <li ui-sref-active="active"><a ui-sref="home.a">Wspolne</a></li> 
    <li ui-sref-active="active"><a ui-sref="home.b">Moje</a></li> 
</ul> 

這條路線是收盤soution主導航欄子vievs主動當選擇,但是當我將改變主視圖聯繫然後我不能回家原因它是抽象的視圖:

.state('home', { 
    abstract: true, 
    templateUrl: 'app/main/main.html', 
    controller: 'MainController', 
    controllerAs: 'ctrl' 
}) 
.state('home.a', { 
    url: '/', 
    templateUrl: 'app/main/a/a.html', 
    controller: 'AController', 
    controllerAs: 'ctrl' 
}) 
.state('home.b', { 
    url: '/', 
    templateUrl: 'app/main/b/b.html', 
    controller: 'BController', 
    controllerAs: 'ctrl' 
}) 
.state('contact', { 
    url: '/contact', 
    templateUrl: 'app/contact/contact.html', 
    controller: 'ContactController', 
    controllerAs: 'ctrl' 
}) 

回答

0

的解決方案是改變活性條件指狀態對象,並且改變與UI SREF到子p的HREF ath:

<li ng-class="{active: ctrl.$state.includes('home')}"><a href="/">Home</a></li> 

這是工作而不是優雅。有更好的解決方案

0

喜也許要晚,但試試這個;)

<div ui-sref-active="{'active': 'admin.**'}"> 
    <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> 
</div> 
相關問題