2014-07-15 7 views
12

Vorrei impostare in modo condizionale la classe di un elemento in base allo stato dell'applicazione (utilizzando AngularUI Router). Ho provato questo, ma non funziona:Impostare condizionatamente la classe ng di Angular in base allo stato

<li ng-class="{active: $state.current.name === 'state1'}">State 1</li> 
<li ng-class="{active: $state.current.name === 'state2'}">State 2</li> 

Qualche idea?

+2

è '$ state' nella vostra portata? – charlietfl

+0

questa è un'espressione valida, quindi il tuo problema è qualcos'altro, non quel modello specifico. – mpm

+1

charlietfl inchiodato. Questo plunker mi ha aiutato a capirlo: http://plnkr.co/edit/dDCcan?p=preview – tronman

risposta

7

La ragione per cui non ha funzionato era perché, come ha sottolineato @charlietfl, $ stato non era in ambito. Quindi ho aggiunto quanto segue al controller del mio stato:

$rootScope.$state = $state; 

e ha funzionato benissimo. This plunker è un esempio funzionante.

+0

c'è un avvertimento per questo approccio? – Martian2049

6

si può fare qualcosa di simile:

<li ng-class="{active: $state.includes('state1')}">State 1</li> 
<li ng-class="{active: $state.includes('state2')}">State 2</li> 
+0

Ciao Posso sapere il motivo del downgrade della risposta? – V31

+0

non è possibile l'utente '$ stato' in html – Vipul

+0

@Vipul: È nella documentazione di ui-router da utilizzare in questo modo. prova questo link https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stateincludesstatename--params – V31

Problemi correlati