根据angularjs中的位置添加和删除类

时间:2015-10-16 21:06:02

标签: angularjs

我只是在我的根路径上尝试添加课程。

我想要什么

我希望我的标题在根路径上有一个类fixed,当它转到其他地方时会被删除。

我做了什么

我的html:

<header ng-class="currentPath === '/' ? 'main-header fixed' : 'main-header' ">

并在我的控制器上:

'use strict';

angular.module('hipodromoApp')
  .controller('MainCtrl', function ($scope, $route, $location, $rootScope) {
    $scope.awesomeThings = [
      'HTML5 Boilerplate',
      'AngularJS',
      'Karma'
    ];

    $scope.currentPath = $location.path();


  });

我的html总是会返回错误的main-header而没有fixed类。

问题

如果我位于根路径fixed,并且当我去其他地方时将其删除,我该如何向我的html添加名为/的课程?

谢谢!

2 个答案:

答案 0 :(得分:0)

你做的对我有用。从ng-class中删除main-header并将其放在常规类中是有意义的,但这可能是个人的好处。

你有没有console.log你的$ scope.currentPath?我想它可能不是/。 你确定你正在寻找合适的范围吗?没有ng-repeat子范围或类似的东西。

答案 1 :(得分:0)

我能够为此解决问题。

我使用以下内容创建了index_controller

'use strict';

/**
 * @ngdoc function
 * @name hipodromoApp.controller:IndexControllerCtrl
 * @description
 * # IndexControllerCtrl
 * Controller of the hipodromoApp
 */
angular.module('hipodromoApp')
  .controller('IndexControllerCtrl', function ($scope, $location, $rootScope) {
    $scope.awesomeThings = [
      'HTML5 Boilerplate',
      'AngularJS',
      'Karma'
    ];

    // console.log($location.path());


  });

// this will run every time the route changes
angular.module('hipodromoApp')
    .run(['$rootScope','$location', function($rootScope, $location) {
    $rootScope.$on('$routeChangeSuccess', function() {
        var location = $location.path();

        if (location == '/') {
                $rootScope.bodyClass = 'fixed';
        }else{
            $rootScope.bodyClass = '';
        }
    });
  }]);

并在index.html中添加了控制器

<div class="" ng-view=""  ng-controller="IndexControllerCtrl"></div>

刚刚添加了这个

<header class="main-header {{bodyClass}}">

{{bodyClass}}转到根路径时会变为fixed,而当它位于不同的路径时会变为空字符串。

我不确定这是否是解决此问题的最佳方式,但我做了我需要做的事情。