Jest tak wiele odpowiedzi na to pytanie, ale wydaje się, że jest trochę nieporozumień co do tego, co się tutaj właściwie dzieje.
Po pierwsze, twoje założenie
„href zastępuje ng-click w Angular.js”
jest źle. W rzeczywistości po kliknięciu zdarzenie kliknięcia jest najpierw obsługiwane przez angular (zdefiniowane przez ng-click
dyrektywę w angular 1.x i click
angular 2.x +), a następnie kontynuuje propagację (co ostatecznie powoduje przejście przeglądarki do url zdefiniowany z href
atrybutem). (Zobacz to, aby uzyskać więcej informacji na temat propagacji zdarzeń w javascript)
Jeśli chcesz tego uniknąć, powinieneś anulować propagację zdarzenia za pomocą metody interfejsu The EventpreventDefault()
:
<a href="#" ng-click="$event.preventDefault();logout()" />
(To jest czysta funkcjonalność javascript i nie ma nic wspólnego z angularem)
Teraz to już rozwiąże twój problem, ale nie jest to optymalne rozwiązanie. Angular słusznie promuje wzorzec MVC . Dzięki temu rozwiązaniu Twój szablon HTML jest mieszany z logiką javascript. Powinieneś starać się tego unikać tak bardzo, jak to możliwe i umieścić swoją logikę w kontrolerze kątowym. Więc lepszy sposób byłby
<a href="#" ng-click="logout($event)" />
A w metodzie logout ():
logout($event) {
$event.preventDefault();
...
}
Teraz zdarzenie click nie dotrze do przeglądarki, więc nie spróbuje załadować wskazanego linku href
. (Należy jednak pamiętać, że jeśli użytkownik kliknie link prawym przyciskiem myszy i bezpośrednio go otworzy, nie będzie w ogóle zdarzenia kliknięcia. Zamiast tego zostanie bezpośrednio załadowany adres URL wskazany przez href
atrybut).
Odnośnie komentarzy na temat koloru odwiedzanych linków w przeglądarkach. Ponownie nie ma to nic wspólnego z angularem, jeśli href="..."
domyślnie kierujesz na odwiedzany adres URL przez przeglądarkę, kolor linku będzie inny. Jest to kontrolowane przez CSS: odwiedził Selector , możesz zmodyfikować swój css, aby nadpisać to zachowanie:
a {
color:pink;
}
PS1 :
Niektóre odpowiedzi sugerują użycie:
<a href .../>
href
jest dyrektywą kątową. Gdy szablon jest przetwarzany przez kątowe, zostanie on przekonwertowany na
<a href="" .../>
Te dwa sposoby są zasadniczo takie same.