Routes 如何基于当前路由名称/控制器设置类

Routes 如何基于当前路由名称/控制器设置类,routes,angularjs,Routes,Angularjs,尝试基于我的当前控制器或当前路由(URL段1)设置类 差不多 <body class="{{controllerName}}"> 这样,如果我需要针对CSS特定性的单独页面,它会变得很容易。您可以使用该服务,它具有当前属性,将为您提供当前控制器。我的解决方案是:在路由范围订阅路由更改,并将控制器的名称放在那里: app.run(function($rootScope) { $rootScope.$on('$routeChangeSuccess', function(ev,

尝试基于我的当前控制器或当前路由(URL段1)设置类

差不多

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


这样,如果我需要针对CSS特定性的单独页面,它会变得很容易。

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

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

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

检查Angular的1.3版,您可以使用以下代码:

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

更简单。在
数据
参数上直接有一个
控制器
属性

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

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

谢谢!作为数据进行了一些轻微的编辑。$route.controller正在根据我启动的一些选项卡控制器进行更改。只需要父控制器。它是数据。$$route.controller在1.0.7中请注意,以和开头的属性可以在您自己的risc中访问或修改(因为它们可能在AngularJS的版本之间更改)。知道为什么数据。$route会未定义吗?瓦伦廷,我已经把你的代码放在我的主文件中,routeProvider也配置在这里。routeChangeSuccess正在被触发。如果您使用ui路由器,我认为它应该是数据。$$route而不是数据。$route我猜这在
.run()
中不可用。您能提供工作示例吗?我无法从我的控制器访问$route.current:(不建议使用$$属性,因为它们是Angular的内部属性,不是公共API的一部分,并且在将来的更新中可能会被更改或破坏。从文档():“如果检查范围,您可能还会注意到一些以$$开头的属性。这些属性被视为私有属性,不应访问或修改。”谢谢您的评论:)