Ada begitu banyak jawaban untuk pertanyaan ini di sini, tetapi tampaknya ada sedikit kebingungan tentang apa yang sebenarnya terjadi di sini.
Pertama, premis Anda
"href menimpa ng-klik di Angular.js"
salah. Apa yang sebenarnya terjadi adalah setelah klik Anda, peristiwa klik pertama-tama ditangani oleh sudut (ditentukan oleh ng-click
direktif di sudut 1.x dan click
di sudut 2.x +) dan kemudian terus menyebar (yang akhirnya memicu browser untuk menavigasi ke url didefinisikan dengan href
atribut). (Lihat ini untuk lebih lanjut tentang propagasi peristiwa di javascript)
Jika Anda ingin menghindari ini, maka Anda harus membatalkan penyebaran acara menggunakan metode antarmuka AcarapreventDefault()
:
<a href="#" ng-click="$event.preventDefault();logout()" />
(Ini adalah fungsi javascript murni dan tidak ada hubungannya dengan sudut)
Sekarang, ini sudah akan menyelesaikan masalah Anda tetapi ini bukan solusi optimal. Angular, berhak, mempromosikan pola MVC . Dengan solusi ini, template html Anda dicampur dengan logika javascript. Anda harus mencoba menghindari ini sebanyak mungkin dan memasukkan logika Anda ke dalam pengontrol sudut Anda. Jadi cara yang lebih baik adalah
<a href="#" ng-click="logout($event)" />
Dan dalam metode logout () Anda:
logout($event) {
$event.preventDefault();
...
}
Sekarang peristiwa klik tidak akan mencapai browser, jadi tidak akan mencoba memuat tautan yang ditunjuk oleh href
. (Namun perhatikan bahwa jika pengguna mengklik kanan pada link tersebut dan langsung membuka link tersebut, maka tidak akan ada peristiwa klik sama sekali. Sebaliknya akan langsung memuat url yang ditunjukkan oleh href
atribut.)
Mengenai komentar tentang warna link yang dikunjungi di browser. Sekali lagi ini tidak ada hubungannya dengan sudut, jika Anda href="..."
menunjuk ke url yang dikunjungi oleh browser Anda secara default, warna tautan akan berbeda. Ini dikontrol oleh CSS: Visit Selector , Anda dapat mengubah css Anda untuk menimpa perilaku ini:
a {
color:pink;
}
PS1 :
Beberapa jawaban menyarankan untuk digunakan:
<a href .../>
href
adalah arahan sudut. Saat template Anda diproses oleh sudut, ini akan diubah menjadi
<a href="" .../>
Kedua cara itu pada dasarnya sama.