Misalkan Anda menggunakan rute:
// bootstrap
myApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider.when('/home', {
templateUrl: 'partials/home.html',
controller: 'HomeCtrl'
});
$routeProvider.when('/about', {
templateUrl: 'partials/about.html',
controller: 'AboutCtrl'
});
...
Dan di html Anda, Anda ingin menavigasi ke halaman about ketika sebuah tombol diklik. Salah satu caranya
<a href="#/about">
... tapi sepertinya ng-klik juga akan berguna di sini.
- Apakah anggapan itu benar? Ng-klik itu digunakan, bukan jangkar?
- Jika demikian, bagaimana cara kerjanya? YAITU:
<div ng-click="/about">
angularjs
routes
angularjs-routing
angularjs-ng-click
angularjs-ng-route
Robert Christian
sumber
sumber
Jawaban:
Rute memantau
$location
layanan dan merespons perubahan URL (biasanya melalui hash). Untuk "mengaktifkan" rute, Anda cukup mengubah URL. Cara termudah untuk melakukannya adalah dengan tag jangkar.Tidak ada yang lebih rumit yang dibutuhkan. Namun, jika Anda harus melakukan ini dari kode, cara yang tepat adalah dengan menggunakan
$location
layanan:Misalnya, tombol mana yang dapat memicu:
sumber
path
danhash
melayani dua tujuan berbeda tetapi tergantung pada keadaan dapat memiliki efek yang sama. Untuk sebagian besar kasus, untuk perutean yang ketat (terutama dengan yanghtml5mode
diaktifkan),path
akan menjadi pilihan kanonik. Saya memperbarui jawaban untuk mencerminkan ini./
. Jika Anda melayani aplikasi dari/app/index.html
, maka ini tidak akan berfungsi karena URL absolutnya/app/next.html
. Tentunya juga, server harus diatur untuk mengembalikanindex.html
file Anda ketika menekan/next.html
. Jangan ragu untuk mengirim Plunker / Fiddle jika Anda ingin saya melihatnya.go
metode ke setiap pengontrol? (Atau buat pengendali root dengango
metode?)<button click-go="/home">Click</button>
. Fungsi tautan hanya akan seperti ini:element.on("click", function () { $location.path(attrs.clickGo); });
Berikut ini tip yang bagus yang tidak disebutkan siapa pun. Di pengontrol tempat fungsi berada, Anda harus menyertakan penyedia lokasi:
sumber
Menggunakan atribut khusus (diterapkan dengan arahan) mungkin merupakan cara terbersih. Ini versi saya, berdasarkan saran @Josh dan @ sean.
Ini memiliki beberapa fitur yang bermanfaat, tetapi saya baru di Angular sehingga mungkin ada ruang untuk perbaikan.
sumber
clickLink
atribut berubah, arahan akan menambahkan penangan klik baru tetapi meninggalkan yang lama di tempatnya. Hasilnya bisa sedikit kacau. Saya awalnya menulis ini untuk digunakan dalam situasi di manaclickLink
atribut tidak akan pernah berubah, jadi saya tidak pernah terikat pada hal ini. Saya pikir memperbaiki bug ini sebenarnya akan mengarah pada kode yang lebih sederhana - Saya mungkin mencoba melakukannya ketika saya punya waktu (ha!)attrs.$observe
ada di sana. Terima kasih atas saran Anda.Ingatlah bahwa jika Anda menggunakan ng-klik untuk perutean, Anda tidak akan dapat mengklik kanan elemen tersebut dan memilih 'buka di tab baru' atau ctrl mengklik tautan. Saya mencoba menggunakan ng-href ketika datang ke navigasi. ng-klik lebih baik digunakan pada tombol untuk operasi atau efek visual seperti runtuh. Tapi Tentang saya tidak akan merekomendasikan. Jika Anda mengubah rute, Anda mungkin perlu mengubah banyak aplikasi. Miliki metode untuk mengembalikan tautan. mis: Tentang. Metode ini Anda tempatkan di utilitas
sumber
Saya menggunakan
ng-click
arahan untuk memanggil fungsi, saat meminta route templateUrl, untuk memutuskan mana yang<div>
harus beradashow
atauhide
di dalam halaman route templateUrl atau untuk skenario yang berbeda.AngularJS 1.6.9
Mari kita lihat contoh, ketika di halaman routing, saya perlu add
<div>
atau edit<div>
, yang saya kontrol menggunakan model pengontrol induk$scope.addProduct
dan$scope.editProduct
boolean.RoutingTesting.html
TestingPage.html
kedua halaman -
RoutingTesting.html
(induk),TestingPage.html
(halaman perutean) berada di direktori yang sama,Semoga ini bisa membantu seseorang.
sumber
Solusi lain tetapi tanpa menggunakan ng-klik yang masih berfungsi bahkan untuk tag lain selain
<a>
:Dengan cara ini Anda juga dapat melewatkan parameter ke rute Anda: https://stackoverflow.com/a/40045556/838494
(Ini adalah hari pertamaku dengan sudut. Umpan balik yang lembut diterima)
sumber
Kamu bisa memakai:
Jika Anda ingin beberapa variabel dinamis di dalam href, Anda dapat melakukannya seperti ini:
Di mana tautan adalah variabel lingkup sudut.
sumber
ng-click
untuk mengubah lokasi.lakukan saja sebagai berikut di html Anda tulis:
Dan di controller Anda, tambahkan $ state sebagai berikut:
sumber