Подтвердить что ты не робот

Как установить класс на основе текущего имени маршрута/контроллера

Попытка установить класс на основе текущего текущего контроллера или текущего маршрута (URL-сегмент 1).

что-то вроде

<body class="{{controllerName}}">

Таким образом, если мне нужно настроить отдельные страницы для специфичности CSS, это упростит.

4b9b3361

Ответ 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;
});