Używam routingu AngularUI i chciałbym to zrobić, ng-class="{active: current.state}"
ale nie jestem pewien, jak dokładnie wykryć bieżący stan w takiej dyrektywie.
źródło
Używam routingu AngularUI i chciałbym to zrobić, ng-class="{active: current.state}"
ale nie jestem pewien, jak dokładnie wykryć bieżący stan w takiej dyrektywie.
Możesz także użyć dyrektywy ui-sref-active :
<ul>
<li ui-sref-active="active" class="item">
<a href ui-sref="app.user({user: 'bilbobaggins'})">@bilbobaggins</a>
</li>
<!-- ... -->
</ul>
Lub filtry:
"stateName" | isState
&"stateName" | includedByState
Aktualizacja:
Ta odpowiedź dotyczy znacznie starszej wersji Ui-Router. W przypadku nowszych wersji (0.2.5+), użyj dyrektywy helper ui-sref-active
. Szczegóły tutaj .
Oryginalna odpowiedź:
Dołącz usługę $ state do kontrolera. Możesz przypisać tę usługę do właściwości w swoim zakresie.
Przykład:
$scope.$state = $state;
Następnie, aby uzyskać aktualny stan w swoich szablonach:
$state.current.name
Aby sprawdzić, czy stan jest obecnie aktywny:
$state.includes('stateName');
Ta metoda zwraca wartość true, jeśli stan jest uwzględniony, nawet jeśli jest częścią stanu zagnieżdżonego. Gdybyś był w stanie zagnieżdżonym user.details
i sprawdzałeś $state.includes('user')
, zwróciłoby to prawdę.
W swoim przykładzie klasowym zrobiłbyś coś takiego:
ng-class="{active: $state.includes('stateName')}"
Jeśli używasz ui-router, spróbuj $ state.is ();
Możesz go używać w ten sposób:
$state.is('stateName');
Zgodnie z dokumentacją:
źródło
Użycie dyrektywy ui-sref-active, która działała dla mnie, to:
jak znaleziono tutaj pod komentarzem oznaczonym jako „tgrant59 skomentował 31 maja 2016 r.”.
Używam angular-ui-router v0.3.1.
źródło
Sprawdź angular-ui, a konkretnie sprawdzanie tras: http://angular-ui.github.io/ui-utils/
źródło