Heim > Web-Frontend > js-Tutorial > Direktive in AngularJS zum Erstellen eines menu_AngularJS

Direktive in AngularJS zum Erstellen eines menu_AngularJS

WBOY
Freigeben: 2016-05-16 15:17:54
Original
1316 Leute haben es durchsucht

Sagen Sie mir, wie ich normalerweise Menüs schreibe:

<ul>
<li data-ng-class="{'active': highlight('/orders')}">
<a href="#/orders">Orders</a>
</li>
</ul> 
Nach dem Login kopieren

Ob der Menüpunkt hervorgehoben wird, hängt von der Hervorhebungsmethode im Controller ab.

vm.highlight = funciton(path){
return $locaiton.path().substr(0, path.lenght) === path;
}
Nach dem Login kopieren

Es wäre prägnanter, wenn es direktiv verwendet würde.

<ul menu-highlighter highlight-class-name="active">
<li><a href="#/customers">Customers</a></li>
<li><a href="#/orders">Customers</a></li>
<li><a href="#/about">Customers</a></li>
</ul> 
Nach dem Login kopieren

Richtlinie lautet ungefähr:

(function(){
var injectParams = ['$location'];
var menuHighlighter = function($location){
var link = function(scope, element){
function setActive(){
var path = $location.path();
var className = scope.highlightClassName || 'active';
if(path){
angular.forEac(element.find('li'), function(li){
//<a href="#/customers">Customers</a>
var anchor = li.querySelector('a');
//#/customers
var href=(anchor && anchor.href) &#63; anchor.href : anchor.getAttribute('data-href').replace('#','');
//customers
var trimmedHref = href.substr(href.indexOf('#/')+1, href.length);
var basePath = path.substr(0, trimmedHref.length);
if(trimmedHref === basePath){
angular.element(li).addClass(className);
} else {
angular.element(li).removeClass(className);
}
});
} 
}
setActive();
scope.$on('$locationChangeSuccess', setActive);
};
return {
restrict: 'A',
scope: {
highlightClassName: '@'
},
link: link
}
};
menuHighlighter.$inject = injectParams;
angular.module('my.directives')
.directive('menuHighlighter', menuHighlighter);
}()); 
Nach dem Login kopieren

Der obige Inhalt bezieht sich auf das Wissen über die Erstellung eines Menüs mithilfe der Richtlinie in AngualrJS. Ich hoffe, dass es für alle hilfreich ist.

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage