Как установить класс на основе текущего имени маршрута/контроллера
Попытка установить класс на основе текущего текущего контроллера или текущего маршрута (URL-сегмент 1).
что-то вроде
<body class="{{controllerName}}">
Таким образом, если мне нужно настроить отдельные страницы для специфичности CSS, это упростит.
Ответы
Ответ 1
Моим решением было бы: подписаться на изменения маршрута в области маршрута и поместить там имя контроллера:
app.run(function($rootScope) {
$rootScope.$on('$routeChangeSuccess', function(ev,data) {
if (data.$route && data.$route.controller)
$rootScope.controller = data.$route.controller;
})
});
Отметьте Решение Plunker
Ответ 2
Вы можете использовать службу $route, у нее есть свойство current
, которое даст вам текущий контроллер.
Ответ 3
Еще проще. Существует свойство controller
непосредственно в аргументе data
.
$rootScope.$on("$routeChangeSuccess", function(e, data) {
$rootScope.controller = data.controller;
});
Насколько я могу судить, аргумент data
- это тот же объект, что и $route.current
. Свойство controller
находится в прототипе этого объекта.
Ответ 4
Для версии 1.3 Angular вы можете использовать этот фрагмент кода:
$rootScope.$on('$routeChangeSuccess', function (ev, data) {
if (data.$$route && data.$$route.controller)
$rootScope.controller = data.$$route.controller;
});