Javascript 根据状态添加实体类

Javascript 根据状态添加实体类,javascript,angularjs,angular-ui-router,url-routing,angularjs-routing,Javascript,Angularjs,Angular Ui Router,Url Routing,Angularjs Routing,我有这样的工作 <body ng-app="ELT" ng-class="{'mapBody': $state.includes('map')}" ng-controller="mainCtrl"> 有更好的方法吗?我不喜欢这样一个事实,我必须有一个新的控制器只是为了这一件事,加上它在html中有很多逻辑。根据Radim Kohler的说法,更好的方法是,您可以使用ui sref active指令 要在ui路由器状态匹配时将活动类添加到元素中,请使用 HTML <body

我有这样的工作

  <body ng-app="ELT" ng-class="{'mapBody': $state.includes('map')}" ng-controller="mainCtrl">

有更好的方法吗?我不喜欢这样一个事实,我必须有一个新的控制器只是为了这一件事,加上它在html中有很多逻辑。

根据Radim Kohler的说法,更好的方法是,您可以使用
ui sref active
指令

要在ui路由器状态匹配时将活动类添加到元素中,请使用

HTML

<body ng-app="ELT" ui-sref-active="mapBody" ng-controller="mainCtrl">
  <a ui-sref="app"></a>
</body>
上面的代码将更干净,它将避免每次在作用域内分配$state


谢谢。

尝试检查ui sref活动指令。。。试图理解用户,所以我需要在我的body ui sref=“map”ui sref active=“mapBody”上执行类似操作,所以要使其正常工作,body标记下需要一个空链接?似乎有点奇怪。。我举了一个例子来说明如何做到这一点。在你的页面上有多少ui sref?有很多,但我看不出主页上有多少链接有多重要。我只是想根据状态在页面上添加一个body类。因为我想为我的地图视图添加一些不同的样式。那么使用这个指令将很难管理。
ui-sref-active
指令所做的是它通过它们内部的
ui-sref
提到的状态。。如果它得到了满足,那么它会将提到的类赋予该元素。。
<body ng-app="ELT" ui-sref-active="mapBody" ng-controller="mainCtrl">
  <a ui-sref="app"></a>
</body>
//it will assign a state inside $rootScope and it will get available on each page 
app.run(function($rootScope, $state) { 
  $rootScope.$state = $state;
});