Я використовую маршрутизацію AngularUI, і я хотів би зробити це, ng-class="{active: current.state}"
але я не впевнений, як точно визначити поточний стан у такій директиві.
Я використовую маршрутизацію AngularUI, і я хотів би зробити це, ng-class="{active: current.state}"
але я не впевнений, як точно визначити поточний стан у такій директиві.
Відповіді:
Оновлення:
Ця відповідь стосувалася набагато старішої версії Ui-Router. Для останніх версій (0.2.5+) використовуйте допоміжну директиву ui-sref-active
. Деталі тут .
Оригінальна відповідь:
Включіть службу $ state у свій контролер. Ви можете призначити цю послугу властивості за вашим обсягом.
Приклад:
$scope.$state = $state;
Потім, щоб отримати поточний стан у ваших шаблонах:
$state.current.name
Щоб перевірити, чи є стан поточно активним:
$state.includes('stateName');
Цей метод повертає true, якщо стан включено, навіть якщо він є частиною вкладеного стану. Якщо ви знаходитесь у вкладеному стані, user.details
і ви перевіряли наявність $state.includes('user')
, це поверне істину.
У прикладі вашого класу ви зробите щось подібне:
ng-class="{active: $state.includes('stateName')}"
Якщо ви використовуєте ui-маршрутизатор, спробуйте $ state.is ();
Ви можете використовувати його так:
$state.is('stateName');
Відповідно до документації:
$ state.is ... подібний до $ state.includes, але перевіряє лише повне ім'я штату.
Використання директиви 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.
Перевірте angular-ui, зокрема, перевірку маршруту: http://angular-ui.github.io/ui-utils/