Es gibt hier so viele Antworten auf diese Frage, aber es scheint ein wenig Verwirrung darüber zu geben, was hier tatsächlich vor sich geht.
Erstens Ihre Prämisse
"href überschreibt ng-click in Angular.js"
ist falsch. Was tatsächlich passiert, ist, dass das Klickereignis nach dem Klicken zuerst von eckig (definiert durch die ng-click
Direktive in eckigem 1.x und click
in eckigem 2.x +) behandelt wird und sich dann weiter ausbreitet (was den Browser schließlich dazu veranlasst, zu navigieren) URL mit href
Attribut definiert ). (Siehe dies zur Ereignisverbreitung in Javascript finden Sie hier)
Wenn Sie dies vermeiden wollen, dann sollten Sie die Ereignispropagierung mit der abbrechen Event - Schnittstelle des preventDefault()
Verfahrens :
<a href="#" ng-click="$event.preventDefault();logout()" />
(Dies ist reine Javascript-Funktionalität und hat nichts mit Winkel zu tun.)
Dies wird Ihr Problem bereits lösen, aber dies ist nicht die optimale Lösung. Angular fördert zu Recht das MVC-Muster . Bei dieser Lösung wird Ihre HTML-Vorlage mit der Javascript-Logik gemischt. Sie sollten versuchen, dies so weit wie möglich zu vermeiden und Ihre Logik in Ihren Winkelregler zu integrieren. Ein besserer Weg wäre also
<a href="#" ng-click="logout($event)" />
Und in Ihrer logout () -Methode:
logout($event) {
$event.preventDefault();
...
}
Jetzt erreicht das Klickereignis den Browser nicht mehr und versucht nicht, den Link zu laden, auf den verwiesen wird href
. (Beachten Sie jedoch, dass, wenn der Benutzer mit der rechten Maustaste auf den Link klickt und den Link direkt öffnet, überhaupt kein Klickereignis auftritt. Stattdessen wird die URL, auf die das href
Attribut zeigt, direkt geladen .)
Zu den Kommentaren zur besuchten Linkfarbe in den Browsern. Auch dies hat nichts mit Winkel zu tun. Wenn Sie href="..."
standardmäßig auf eine von Ihrem Browser besuchte URL verweisen, ist die Linkfarbe unterschiedlich. Dies wird durch CSS gesteuert : Selector besucht . Sie können Ihr CSS ändern, um dieses Verhalten zu überschreiben:
a {
color:pink;
}
PS1 :
Einige Antworten empfehlen:
<a href .../>
href
ist eine Winkelrichtlinie. Wenn Ihre Vorlage im Winkel verarbeitet wird, wird diese in konvertiert
<a href="" .../>
Diese beiden Wege sind im Wesentlichen gleich.