JS
mainApp.controller("leftmenuController", function($scope, $http) {
$scope.check = function(event) {
$('li').removeClass('active');
$(event.target).addClass('active');
};
});
Html
<li class="active" ng-click="check($event)"><a href="#/firstpage">Link</a>
<li ng-click="check($event)"><a href="#/project"></a></li>
если я нажимаю на проект, "активные" не переходят в проект. что не так с моим кодом.
что не так с моим кодом
Он не использовал угловую форму, чтобы использовать ее. Вы никогда не должны манипулировать DOM в контроллере. Контроллер должен только изменять модель, и в представлении должны использоваться угловые выражения и директивы для генерации HTML на основе этой модели.
Поэтому у вас должно быть что-то вроде
<li ng-class="{active: activeLink === 'first'}" ng-click="checkLink('first')" ...>
а также
<li ng-class="{active: activeLink === 'project'}" ng-click="checkLink('project')" ...>
И контроллер должен просто сделать
$scope.checkLink = function(link) {
$scope.activeLink = link;
}
Попробуй это
$scope.activeMenu = 'firstpage';
$scope.check = function(menu) {
$scope.activeMenu = menu;
};
HTML
<li ng-class="{'active':activeMenu=='firstpage'}" ng-click="check('firstpage')"><a href="#/firstpage">Link</a>
<li ng-class="{'active':activeMenu=='project'}" ng-click="check('project')"><a href="#/project"></a></li>
вы можете сделать это без jquery
<li ng-class="setActive('#/firstpage')"><a href="#/firstpage">Link</a>
И в шаблоне
$scope.setActive= function (path) {
return ($location.path().substr(0, path.length) === path) ? 'active' : '';
}
$(event.target.parentNode).addClass('active');