You can have a look at AngularStrap, the navbar directive seems to be what you are looking for:
https://github.com/mgcrea/angular-strap/blob/master/src/navbar/navbar.js
.directive('bsNavbar', function($location) {
'use strict';
return {
restrict: 'A',
link: function postLink(scope, element, attrs, controller) {
// Watch for the $location
scope.$watch(function() {
return $location.path();
}, function(newValue, oldValue) {
$('li[data-match-route]', element).each(function(k, li) {
var $li = angular.element(li),
// data('match-rout') does not work with dynamic attributes
pattern = $li.attr('data-match-route'),
regexp = new RegExp('^' + pattern + '$', ['i']);
if(regexp.test(newValue)) {
$li.addClass('active');
} else {
$li.removeClass('active');
}
});
});
}
};
});
To use this directive:
Download AngularStrap from http://mgcrea.github.io/angular-strap/
Include the script on your page after bootstrap.js:
<script src="lib/angular-strap.js"></script>
Add the directives to your module:
angular.module('myApp', ['$strap.directives'])
Add the directive to your navbar:
<div class="navbar" bs-navbar>
Add regexes on each nav item:
<li data-match-route="/about"><a href="#/about">About</a></li>