How to set bootstrap navbar active class with Angular JS?

A very elegant way is to use ng-controller to run a single controller outside of the ng-view:

<div class="collapse navbar-collapse" ng-controller="HeaderController">
    <ul class="nav navbar-nav">
        <li ng-class="{ active: isActive("https://stackoverflow.com/")}"><a href="https://stackoverflow.com/">Home</a></li>
        <li ng-class="{ active: isActive('/dogs')}"><a href="http://stackoverflow.com/dogs">Dogs</a></li>
        <li ng-class="{ active: isActive('/cats')}"><a href="http://stackoverflow.com/cats">Cats</a></li>
    </ul>
</div>
<div ng-view></div>

and include in controllers.js:

function HeaderController($scope, $location) 
{ 
    $scope.isActive = function (viewLocation) { 
        return viewLocation === $location.path();
    };
}

Leave a Comment