Javascript 当AngularJS中发生路由更改时,如何设置ngclass更改?

Javascript 当AngularJS中发生路由更改时,如何设置ngclass更改?,javascript,angularjs,ngroute,ng-view,Javascript,Angularjs,Ngroute,Ng View,当路线发生变化时,我正试图在我的主.container类上添加一个类 我目前的简单解决方案是在每个主菜单url上单击ng(页面上没有其他url): 然后在我的html中: <div ng-controller="MainCtrl" class="container" ng-class="{'main': isMain}"> <ul class="main-menu"> <li><a href="#" ng-click="setMain(tru

当路线发生变化时,我正试图在我的主
.container
类上添加一个类

我目前的简单解决方案是在每个主菜单url上单击
ng
(页面上没有其他url):

然后在我的html中:

<div ng-controller="MainCtrl" class="container" ng-class="{'main': isMain}">
  <ul class="main-menu">
    <li><a href="#" ng-click="setMain(true)"></li>
    <li><a href="#/page-1" ng-click="setMain(false)"></li>
    <li><a href="#/page-2" ng-click="setMain(false)"></li>
  </ul>
  <div ng-view></div>
</div>

这似乎工作正常,只要我需要添加更多的url,问题是当用户没有点击任何链接,直接访问一个他没有得到主类的url时


有更好的方法吗?

您可以使用一些不同的选项,但我认为最简单的方法是通过查看
$location
在控制器初始化时设置
$scope.isMain
值。因此,在控制器内部,您可以有如下内容:

var loc = $location.path();
if(loc === /* some route rule you require */){
    $scope.isMain = true;
}

请看这里:$route作为底部的示例,有几个不同的示例,说明您可以访问与该路由相关的数据类型。

当您说“直接访问url”时,您的意思是他们在地址栏中键入内容,路由以编程方式更改,还是其他方式完全更改?@maf748是,我的意思是他们把它输入地址栏。我想过使用路由参数,但这意味着我必须为每个视图加载相同的控制器。如果我错了,请纠正我的错误,但是如果我想为其中一个视图使用单独的控制器,我必须设置某种服务来共享路由。或者您可以创建一个基于路由处理状态的父控制器,并具有单独的子控制器。好主意。这就是你回答的意思吗?是的。我一直使用公共父控制器。
var loc = $location.path();
if(loc === /* some route rule you require */){
    $scope.isMain = true;
}