ng-class to highlight active menu item based on ng-repeat. AngularJS

后端 未结 3 1657
眼角桃花
眼角桃花 2020-12-30 04:04

I have a menu based on the following example:

 
相关标签:
3条回答
  • 2020-12-30 04:48

    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.

    0 讨论(0)
  • 2020-12-30 04:52

    //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>

    0 讨论(0)
  • 2020-12-30 05:01

    Try this out:- http://jsfiddle.net/uDPHL/146/

    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>
    
    0 讨论(0)
提交回复
热议问题