I have a menu based on the following example:
I found it was a little easier if you go:
<li ng-repeat="i in mainMenu" ng-class="{'active':i.path == path}">
Then you can just change the $scope.path in your controller.
//app.run
App.run(["$rootScope", "$state", "$stateParams",function ($rootScope, $state, $stateParams) {
// Set reference to access them from any scope
$rootScope.$route = $state;
}]);
// app.config
$stateProvider
.state('admin', {
url: '/admin/',
templateUrl: 'app/admin/admin.html',
controller: 'AdminController',
})
.state('admin.dashboard', {
url: 'dashboard',
title: 'Dashboard',
activetab: 'dashboard',
controller: 'DashboardController',
templateUrl: 'app/admin/dashboard.html',
})
.state('admin.view1', {
url: 'view1',
title: 'view1',
activetab: 'view1',
controller: 'view1Controller',
templateUrl: 'app/admin/view1.html',
})
.state('admin.view2', {
url: 'view2',
title: 'view2',
activetab: 'view2',
controller: 'View2Controller',
templateUrl: 'app/admin/view2.html',
});
<li class="h4" ng-class="{'active': $route.current.activetab == 'dashboard'}">
<a>Dashboard</a>
</li>
<li class="h4" ng-class="{'active': $route.current.activetab == 'view1'}">
<a>view1</a>
</li>
<li class="h4" ng-class="{'active': $route.current.activetab == 'view2'}">
<a active-link="active">view2</a>
</li>
This issue exists in older version of angular js
Reference, issue got resolved after upgrading it to angular js 1.2.0
version.
JS:-
var navList = angular.module('navList', []);
navList.controller('navCtrl', ['$scope', '$location', function ($scope, $location) {
$scope.navLinks = [{
Title: 'home',
LinkText: 'Home',
}, {
Title: 'about',
LinkText: 'About Us'
}, {
Title: 'contact',
LinkText: 'Contact Us'
}];
$scope.navClass = function (page) {
var currentRoute = $location.path().substring(1) || 'home';
return page === currentRoute ? 'active' : '';
};
}]);
HTML:-
<div class="well sidebar-nav" ng-app="navList">
<ul class="nav nav-list" ng-controller="navCtrl">
<li ng-repeat="navLink in navLinks" ng-class="navClass('{{navLink.Title}}')"> <a href='#/{{navLink.Title}}'>{{navLink.LinkText}}</a>
</li>
</ul>
</div>