Saat atribut href dan ng-click ditentukan:
<a href="#" ng-click="logout()">Sign out</a>
yang href
atribut diutamakan atas ng-klik.
Saya mencari cara untuk meningkatkan prioritas ng-click.
href
diperlukan untuk Twitter Bootstrap, saya tidak dapat menghapusnya.
Jawaban:
Anda mungkin sebaiknya menggunakan tag tombol jika Anda tidak membutuhkan uri.
sumber
Contoh dari situs dokumentasi bersudut ini
href
bahkan tanpa menugaskannya ke string kosong:http://docs.angularjs.org/api/ng.directive:select
sumber
href="#"
) menyebabkan halaman dimuat ulang, yang juga salah.href=""
solusinya.<a href="javscript:void(0)" ng-click="logout()">Sign out</a>
akan melayani Anda dengan baik jugaAnda dapat dengan mudah mencegah perilaku default dari peristiwa klik secara langsung di template Anda.
Sesuai dokumentasi sudut ,
sumber
Ini solusi lainnya:
yaitu Hapus saja # dari atribut href
sumber
Satu petunjuk lagi. Jika Anda membutuhkan URL asli (untuk mendukung aksesibilitas browser), Anda dapat melakukan hal berikut:
template:
pengarahan:
Dengan cara ini kode Anda di linkClicked () akan memiliki kesempatan untuk dieksekusi sebelum menavigasi ke tautan
sumber
Di Angular,
<a>
s adalah arahan . Dengan demikian, jika Anda memiliki kosonghref
atau tidakhref
, Angular akan memanggilevent.preventDefault
.Dari sumber :
Berikut adalah plnkr yang mendemonstrasikan
href
skenario yang hilang .sumber
Ini berfungsi untuk saya di IE 9 dan AngularJS v1.0.7:
Terima kasih untuk komentar duckeggs atas solusi yang berhasil!
sumber
Ada begitu banyak jawaban untuk pertanyaan ini di sini, tetapi tampaknya ada sedikit kebingungan tentang apa yang sebenarnya terjadi di sini.
Pertama, premis Anda
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 danclick
di sudut 2.x +) dan kemudian terus menyebar (yang akhirnya memicu browser untuk menavigasi ke url didefinisikan denganhref
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 Acara
preventDefault()
:(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
Dan dalam metode logout () Anda:
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 olehhref
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:PS1 :
Beberapa jawaban menyarankan untuk digunakan:
href
adalah arahan sudut. Saat template Anda diproses oleh sudut, ini akan diubah menjadiKedua cara itu pada dasarnya sama.
sumber
Cukup tulis ng-click sebelum href .. Berhasil untuk saya
sumber
Saya rasa Anda tidak perlu menghapus "#" dari href. Berikut bekerja dengan Angularjs 1.2.10
sumber
Anda juga dapat mencoba ini:
sumber
Saya akan menambahkan contoh yang berhasil untuk saya dan Anda dapat mengubahnya sesuai keinginan.
Saya menambahkan kode di bawah ini di dalam pengontrol saya.
dan untuk halaman tampilan saya, saya menambahkan kode di bawah ini.
sumber
Apakah Anda mencoba mengalihkan di dalam fungsi logout itu sendiri? Misalnya, fungsi logout Anda adalah sebagai berikut
Maka Anda bisa memilikinya
sumber
Tolong periksa ini
sumber
sumber
Ini berhasil untuk saya
sumber