如何根据当前路由名称/控制器设置类

时间:2013-01-08 17:02:51

标签: routes angularjs

尝试根据我当前的控制器或当前路线(URL Segment 1)设置一个类。

类似

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

如果我需要针对CSS特异性定位单独的页面,那么就很容易。

4 个答案:

答案 0 :(得分:33)

我的解决方案是:在路由范围订阅路由更改并将控制器的名称放在那里:

app.run(function($rootScope) {
   $rootScope.$on('$routeChangeSuccess', function(ev,data) {   
     if (data.$route && data.$route.controller)
       $rootScope.controller = data.$route.controller;
   })
});

检查Plunker solution

答案 1 :(得分:5)

您可以使用$route服务,它具有current属性,可以为您提供当前控制器。

答案 2 :(得分:3)

更简单。 controller参数上直接有一个data属性。

$rootScope.$on("$routeChangeSuccess", function(e, data) {
    $rootScope.controller = data.controller;
});

据我所知,data参数与$route.current是同一个对象。 controller属性位于该对象的原型中。

答案 3 :(得分:2)

对于Angular的1.3版,您可以使用以下代码:

$rootScope.$on('$routeChangeSuccess', function (ev, data) {
    if (data.$$route && data.$$route.controller)
        $rootScope.controller = data.$$route.controller;
});