Я использую маршрутизацию AngularUI, и я бы хотел сделать ng-class="{active: current.state}"
, но я не уверен, как точно определить текущее состояние в такой директиве.
Как определить текущее состояние в директиве
Ответ 1
Также вы можете использовать директиву ui-sref-active:
<ul>
<li ui-sref-active="active" class="item">
<a href ui-sref="app.user({user: 'bilbobaggins'})">@bilbobaggins</a>
</li>
<!-- ... -->
</ul>
Или фильтры:
"stateName" | isState
и "stateName" | includedByState
Ответ 2
Update:
Этот ответ был для гораздо более ранней версии Ui-Router. Для более поздних выпусков (0.2.5+) используйте вспомогательную директиву ui-sref-active
. Подробнее здесь.
Исходный ответ:
Включите $state службу в свой контроллер. Вы можете назначить эту службу свойству в своей области.
Пример:
$scope.$state = $state;
Затем, чтобы получить текущее состояние в ваших шаблонах:
$state.current.name
Чтобы проверить, активно ли состояние:
$state.includes('stateName');
Этот метод возвращает true, если состояние включено, даже если оно является частью вложенного состояния. Если вы были в вложенном состоянии, user.details
, и вы отметили $state.includes('user')
, он вернет true.
В вашем примере класса вы сделали бы что-то вроде этого:
ng-class="{active: $state.includes('stateName')}"
Ответ 3
Если вы используете ui-router, попробуйте $state.is();
Вы можете использовать его так:
$state.is('stateName');
Ответ 4
Проверьте angular -ui, в частности, проверку маршрута: http://angular-ui.github.io/ui-utils/
Ответ 5
Использование директивы ui-sref-active, которая работала для меня:
<li ui-sref-active="{'active': 'admin'}">
<a ui-sref="admin.users">Administration Panel</a>
</li>
как найдено здесь в комментарии, отмеченном "tgrant59, прокомментированный 31 мая 2016 года".
Я использую angular -ui-router v0.3.1.