javascript - AngularJS 中发生路由更改时如何设置 ngclass 更改?

标签 javascript angularjs ngroute ng-view

当路线更改时,我尝试在我的主 .container 类上添加一个类。

我当前的简单解决方案涉及每个主菜单 URL 上的 ng-click(页面上没有其他 URL):

app.controller('MainCtrl', ['$scope', function( $scope ){

  $scope.setMain = function( value ){ $scope.isMain = value };

}]);

然后在我的 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>

只要我需要添加更多网址,这似乎就可以正常工作,问题是当用户不单击任何链接并直接访问他无法获取主类的网址时。

有更好的方法吗?

最佳答案

您可以使用一些不同的选项,但我认为对您来说最简单的方法是通过查看 $location 在 Controller 初始化时设置 $scope.isMain 值。所以在 Controller 内部你可以有类似的东西:

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

看看这里:http://docs.angularjs.org/api/ngRoute/service/ $route 作为底部的示例,有几个不同的示例,说明您可以访问与路线相关的数据类型。

关于javascript - AngularJS 中发生路由更改时如何设置 ngclass 更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22115436/

相关文章:

javascript - 您可以在运行时更改哪些 JavaScript 代码?

javascript - 根据表(索引)的行删除 localStorage 键

angularjs - angular ui-grid 如何在 gridOptions 中使用 onRegisterApi

javascript - $resource的angularjs无限请求循环

angularjs - AngularJS 中的搜索引擎优化

javascript - 如何处理 async/await fetch API 中的错误 404

javascript - 如何检查javascript中来自服务器的数据中是否存在 key ?

javascript - 如何使用 angular.js 在标题元素中绑定(bind)数据

javascript - Angular $注入(inject)器:modulerr Module Error

javascript - 如何将 ngRoute 注入(inject) Jasmine/Karma AngularJS 单元测试中?