Saya menggunakan Angular UI Router dan ingin memuat ulang keadaan saat ini dan menyegarkan semua data / menjalankan kembali pengontrol untuk keadaan saat ini dan orang tuanya.
Saya memiliki 3 level negara: directory.organisations.details
directory.organisations berisi tabel dengan daftar organisasi. Mengklik suatu item di tabel memuat direktori.organisations.detail dengan $ StateParams yang meneruskan ID item tersebut. Jadi dalam kondisi detail, saya memuat detail untuk item ini, mengeditnya dan kemudian menyimpan data. Semuanya baik-baik saja sejauh ini.
Sekarang saya perlu memuat ulang keadaan ini dan menyegarkan semua data.
Saya telah mencoba:
$state.transitionTo('directory.organisations');
Yang masuk ke keadaan induk tetapi tidak memuat ulang controller, saya kira karena path belum berubah. Idealnya saya hanya ingin tetap dalam status directory.organisations.details dan me-refresh semua data di induk juga.
Saya juga sudah mencoba:
$state.reload()
Saya telah melihat ini di WIKI API untuk $ state.reload "(bug dengan pengontrol memulihkan kembali sekarang, segera perbaiki)."
Setiap bantuan akan dihargai?
sumber
$state.transitionTo($state.current, $stateParams, {reload:true, inherit:false})
harus ditambahkan? Memiliki masalah yang sama dengan ini menyatakan reload saya kehilangan semua data.Jawaban:
Saya menemukan ini sebagai cara kerja tersingkat untuk menyegarkan dengan ui-router:
Pembaruan untuk versi yang lebih baru:
Yang merupakan alias untuk:
Dokumentasi: https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_reload
sumber
ui-router
saya kira tidak ada metode untuk itu. Lakukanwindow.location.reload(true)
.$window.location.reload();
. Meskipun ini tampaknya sedikit berlebihan, ini bisa membuat pengujian / mengejek / mengetahui semua dependensi sepotong kode memiliki hal-hal sedikit lebih mudah.Solusi ini bekerja di AngularJS V.1.2.2:
sumber
resolve
item - item negara?Itu akan menjadi solusi terakhir. (terinspirasi oleh pos @ Hollan_Risley)
Sekarang, kapan pun Anda perlu memuat ulang, cukup hubungi:
sumber
untuk kerangka ionik
https://github.com/angular-ui/ui-router/issues/582
sumber
$state.go
gagal mengalihkan ke keadaan baru. Terima kasih @RRR. Menyelamatkan hariku.$state
? Saya menjalankan ionic 1.4.0, angular 1.5.3Mungkin pendekatan yang lebih bersih adalah sebagai berikut:
Kami dapat memuat ulang negara hanya dari HTML.
sumber
@Holland Risley jawaban sekarang tersedia sebagai api di ui-router terbaru.
http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state
sumber
sumber
sumber
jika Anda ingin memuat ulang seluruh halaman Anda, seperti tampaknya, cukup masukkan $ window ke controller Anda dan kemudian panggil
tetapi jika Anda hanya ingin memuat ulang tampilan Anda saat ini, menyuntikkan $ scope, $ state dan $ stateParams (yang terakhir untuk berjaga-jaga jika Anda perlu memiliki beberapa perubahan parameter dalam reload yang akan datang ini, seperti nomor halaman Anda), kemudian panggil ini dalam metode pengontrol:
AngularJS v1.3.15 angular-ui-router v0.2.15
sumber
Solusi konyol yang selalu berhasil.
sumber
Untuk v1.2.26 sudut, tidak ada yang bekerja di atas. Klik-ng yang memanggil metode di atas harus diklik dua kali untuk membuat status reload.
Jadi saya akhirnya meniru 2 klik menggunakan $ timeout.
sumber
Semuanya gagal untuk saya. Satu-satunya hal yang berhasil ... adalah menambahkan cache-view = "false" ke dalam tampilan yang ingin saya muat ulang saat melihatnya.
dari masalah ini https://github.com/angular-ui/ui-router/issues/582
sumber
Tidak yakin mengapa tak satu pun dari ini tampaknya bekerja untuk saya; salah satu yang akhirnya melakukannya adalah:
Ini dengan Angular 1.4.0
sumber
Saya memiliki beberapa tampilan bersarang dan tujuannya adalah memuat ulang hanya satu dengan konten. Saya mencoba berbagai pendekatan tetapi satu-satunya hal yang berhasil bagi saya adalah:
Dalam hal ini hanya tampilan yang diperlukan akan dimuat ulang dan caching akan tetap berfungsi.
sumber
Saya tahu ada banyak jawaban tetapi cara terbaik yang saya temukan untuk melakukan ini tanpa menyebabkan penyegaran satu halaman penuh adalah dengan membuat parameter dummy pada rute yang ingin saya segarkan dan kemudian ketika saya memanggil rute yang saya lewati, nomor acak ke paramter dummy.
dan kemudian panggilan ke rute itu
Bekerja seperti pesona dan menangani tekad.
sumber
Anda dapat menggunakan @Rohan answer https://stackoverflow.com/a/23609343/3297761
Tetapi jika Anda ingin membuat setiap pengontrol reaload setelah perubahan tampilan yang dapat Anda gunakan
sumber
Jika Anda menggunakan ionic v1, solusi di atas tidak akan berfungsi karena ionic telah mengaktifkan cache templat sebagai bagian dari $ ionicConfigProvider.
Mengatasi hal itu agak sedikit meretas - Anda harus mengatur cache ke 0 di file ionic.angular.js:
sumber
Saya punya masalah ini merusak kepala saya, rute saya dibaca dari file JSON dan kemudian dimasukkan ke dalam arahan. Saya bisa mengklik negara ui tapi saya tidak bisa memuat ulang halaman. Jadi seorang kolega saya menunjukkan kepada saya trik kecil yang bagus untuk itu.
Ini berhasil untuk saya.
Semoga ini bisa membantu
sumber