Wenn Sie mehrere Menüs mit Untermenüs haben, können Sie mit der folgenden Lösung fortfahren.
HTML
<ul class="sidebar-menu" id="nav-accordion">
<li class="sub-menu">
<a href="" ng-click="hasSubMenu('dashboard')">
<i class="fa fa-book"></i>
<span>Dashboard</span>
<i class="fa fa-angle-right pull-right"></i>
</a>
<ul class="sub" ng-show="showDash">
<li><a ng-class="{ active: isActive('/dashboard/loan')}" href="#/dashboard/loan">Loan</a></li>
<li><a ng-class="{ active: isActive('/dashboard/recovery')}" href="#/dashboard/recovery">Recovery</a></li>
</ul>
</li>
<li class="sub-menu">
<a href="" ng-click="hasSubMenu('customerCare')">
<i class="fa fa-book"></i>
<span>Customer Care</span>
<i class="fa fa-angle-right pull-right"></i>
</a>
<ul class="sub" ng-show="showCC">
<li><a ng-class="{ active: isActive('/customerCare/eligibility')}" href="#/CC/eligibility">Eligibility</a></li>
<li><a ng-class="{ active: isActive('/customerCare/transaction')}" href="#/CC/transaction">Transaction</a></li>
</ul>
</li>
</ul>
Es gibt zwei Funktionen, die ich zuerst aufgerufen habe: ng-click = hasSubMenu ('Dashboard'). Diese Funktion wird zum Umschalten des Menüs verwendet und im folgenden Code erläutert. Die ng-class = "{active: isActive ('/ customerCare / transaction')} fügt dem aktuellen Menüpunkt eine aktive Klasse hinzu.
Jetzt habe ich einige Funktionen in meiner App definiert:
Fügen Sie zunächst eine Abhängigkeit $ rootScope hinzu, mit der Variablen und Funktionen deklariert werden. Weitere Informationen zu $ roootScope finden Sie unter folgendem Link: https://docs.angularjs.org/api/ng/service/ $ rootScope
Hier ist meine App-Datei:
$rootScope.isActive = function (viewLocation) {
return viewLocation === $location.path();
};
Die obige Funktion wird verwendet, um dem aktuellen Menüpunkt eine aktive Klasse hinzuzufügen.
$rootScope.showDash = false;
$rootScope.showCC = false;
var location = $location.url().split('/');
if(location[1] == 'customerCare'){
$rootScope.showCC = true;
}
else if(location[1]=='dashboard'){
$rootScope.showDash = true;
}
$rootScope.hasSubMenu = function(menuType){
if(menuType=='dashboard'){
$rootScope.showCC = false;
$rootScope.showDash = $rootScope.showDash === false ? true: false;
}
else if(menuType=='customerCare'){
$rootScope.showDash = false;
$rootScope.showCC = $rootScope.showCC === false ? true: false;
}
}
Standardmäßig sind $ rootScope.showDash und $ rootScope.showCC auf false gesetzt. Die Menüs werden beim ersten Laden der Seite geschlossen. Wenn Sie mehr als zwei Untermenüs haben, fügen Sie diese entsprechend hinzu.
Die Funktion hasSubMenu () dient zum Umschalten zwischen den Menüs. Ich habe eine kleine Bedingung hinzugefügt
if(location[1] == 'customerCare'){
$rootScope.showCC = true;
}
else if(location[1]=='dashboard'){
$rootScope.showDash = true;
}
Das Untermenü bleibt geöffnet, nachdem die Seite gemäß dem ausgewählten Menüpunkt neu geladen wurde.
Ich habe meine Seiten wie folgt definiert:
$routeProvider
.when('/dasboard/loan', {
controller: 'LoanController',
templateUrl: './views/loan/view.html',
controllerAs: 'vm'
})
Sie können die Funktion isActive () nur verwenden, wenn Sie ein einzelnes Menü ohne Untermenü haben. Sie können den Code entsprechend Ihren Anforderungen ändern. Hoffe das wird helfen. Ich wünsche ihnen einen wunderbaren Tag :)