Estou usando o roteamento do AngularUI e gostaria de fazer um, ng-class="{active: current.state}"
mas não tenho certeza de como detectar exatamente o estado atual em uma diretiva como esta.
fonte
Estou usando o roteamento do AngularUI e gostaria de fazer um, ng-class="{active: current.state}"
mas não tenho certeza de como detectar exatamente o estado atual em uma diretiva como esta.
Além disso, você pode usar a diretiva ui-sref-active :
<ul>
<li ui-sref-active="active" class="item">
<a href ui-sref="app.user({user: 'bilbobaggins'})">@bilbobaggins</a>
</li>
<!-- ... -->
</ul>
Ou filtros:
"stateName" | isState
&"stateName" | includedByState
Atualizar:
Esta resposta foi para uma versão muito mais antiga do Ui-Router. Para as versões mais recentes (0.2.5+), use a diretiva helper ui-sref-active
. Detalhes aqui .
Resposta Original:
Inclua o serviço $ state em seu controlador. Você pode atribuir este serviço a uma propriedade em seu escopo.
Um exemplo:
$scope.$state = $state;
Em seguida, para obter o estado atual em seus modelos:
$state.current.name
Para verificar se um estado está ativo no momento:
$state.includes('stateName');
Este método retorna verdadeiro se o estado estiver incluído, mesmo se fizer parte de um estado aninhado. Se você estivesse em um estado aninhado user.details
, e verificasse $state.includes('user')
, ele retornaria verdadeiro.
Em seu exemplo de classe, você faria algo assim:
ng-class="{active: $state.includes('stateName')}"
Se você estiver usando ui-router, tente $ state.is ();
Você pode usá-lo assim:
$state.is('stateName');
Pela documentação:
fonte
O uso da diretiva ui-sref-active que funcionou para mim foi:
como encontrado aqui sob o comentário rotulado como "tgrant59 comentou em 31 de maio de 2016".
Estou usando o angular-ui-router v0.3.1.
fonte
Confira angular-ui, especificamente, verificação de rota: http://angular-ui.github.io/ui-utils/
fonte