2013-06-20 5 views

risposta

110

Inoltre è possibile utilizzare ui-sref-attiva direttiva:

<ul> 
    <li ui-sref-active="active" class="item"> 
    <a href ui-sref="app.user({user: 'bilbobaggins'})">@bilbobaggins</a> 
    </li> 
    <!-- ... --> 
</ul> 

o filtri: "stateName" | isState & "stateName" | includedByState

142

Aggiornamento:

Questa risposta è stata per un rilascio molto più vecchio di Ui-Router. Per le versioni più recenti (0.2.5+), utilizzare la direttiva helper ui-sref-active. Dettagli here.


risposta originale:

Calcola il servizio di stato $ nel controller. È possibile assegnare questo servizio a una proprietà nel proprio ambito.

Un esempio:

$scope.$state = $state; 

Quindi per ottenere lo stato attuale nei template:

$state.current.name 

Per verificare se uno Stato è corrente attiva:

$state.includes('stateName'); 

questo metodo restituisce true se lo stato è incluso, anche se fa parte di uno stato nidificato. Se si era in uno stato di nidificazione, user.details, e si è verificato per $state.includes('user'), restituirebbe true.

Nel tuo esempio di classe, si farebbe qualcosa di simile:

ng-class="{active: $state.includes('stateName')}" 
+3

Che dire degli stati che hanno parametri? –

+3

https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stateincludesstatename--params –

22

Se si utilizza ui-router, provare $ state.is();

Si può usare in questo modo:

$state.is('stateName');

Documentation

0

L'uso di direttiva ui-sref-attiva che ha funzionato per me è stato:

<li ui-sref-active="{'active': 'admin'}"> 
    <a ui-sref="admin.users">Administration Panel</a> 
</li> 

come trovato here sotto il commento etichettato "tgrant59 ha commentato il 31 maggio 2016".

Sto usando angular-ui-router v0.3.1.