Setelah merender seluruh halaman berdasarkan beberapa konteks pengguna dan telah membuat beberapa $http
permintaan, saya ingin pengguna dapat mengubah konteks dan merender kembali semuanya lagi (mengirim ulang semua $http
permintaan, dll). Jika saya mengarahkan ulang pengguna ke tempat lain, semuanya berfungsi dengan baik:
$scope.on_impersonate_success = function(response) {
//$window.location.reload(); // This cancels any current request
$location.path('/'); // This works as expected, if path != current_path
};
$scope.impersonate = function(username) {
return auth.impersonate(username)
.then($scope.on_impersonate_success, $scope.on_auth_failed);
};
Jika saya menggunakan $window.location.reload()
, maka beberapa $http
permintaan auth.impersonate(username)
yang sedang menunggu balasan dibatalkan, jadi saya tidak bisa menggunakannya. Juga, peretasan $location.path($location.path())
tidak berhasil (tidak ada yang terjadi).
Apakah ada cara lain untuk merender ulang halaman tanpa secara manual mengeluarkan semua permintaan lagi?
Jawaban:
Sebagai catatan, untuk memaksa sudut membuat ulang halaman saat ini, Anda dapat menggunakan:
Menurut dokumentasi AngularJS :
sumber
$route.reload()
dibandingkan dengan refresh normal. Sebagai contoh, sebuah tab diatur untuk awalnya ditampilkan di refresh, tetapi ketika metode memuat ulang tampaknya memuat ulang halaman tanpa mengatur tab, tidak yakin apa masalahnya.$route
ke controller agar ini berfungsi.angular.js file
. Jika Anda terus menggunakan$routeProvider
maka Anda sekarang harus memasukkanangular-route.js
dalam HTML Anda:$route.reload()
akan menginisialisasi ulang pengendali tetapi bukan layanan. Jika Anda ingin mengatur ulang seluruh kondisi aplikasi Anda, Anda dapat menggunakan:Ini adalah metode DOM standar yang dapat Anda akses dengan menyuntikkan layanan $ window .
Jika Anda ingin memastikan untuk memuat ulang halaman dari server, misalnya ketika Anda menggunakan Django atau kerangka kerja web lainnya dan Anda menginginkan render sisi server yang baru, berikan
true
sebagai parameterreload
, seperti yang dijelaskan dalam dokumen . Karena itu memerlukan interaksi dengan server, itu akan lebih lambat jadi lakukan itu hanya jika perluSudut 2
Di atas berlaku untuk sudut 1. Saya tidak menggunakan sudut 2, terlihat seperti layanan yang berbeda ada, ada
Router
,Location
, danDOCUMENT
. Saya tidak menguji perilaku yang berbeda di sanasumber
Untuk memuat ulang halaman untuk jalur rute tertentu: -
sumber
Jika Anda menggunakan ui-router sudut, ini akan menjadi solusi terbaik.
sumber
Mungkin Anda lupa menambahkan "$ route" ketika mendeklarasikan dependensi dari Controller Anda:
sumber
Hanya untuk memuat ulang semuanya, gunakan window.location.reload (); dengan angularjs
Lihat contoh kerja
HTML
angularJS
http://jsfiddle.net/HB7LU/22324/
sumber
Jika Anda ingin menyegarkan pengontrol saat menyegarkan layanan apa pun yang Anda gunakan, Anda dapat menggunakan solusi ini:
yaitu
Ini akan menyegarkan controller dan HTML juga Anda bisa menyebutnya Refresh atau Re-Render .
sumber
Sebelum Angular 2 (AngularJs)
Melalui rute
Jika Anda ingin memuat ulang seluruh Aplikasi
2 Sudut
Atau
sumber
Solusi termudah yang saya pikir adalah,
tambahkan '/' ke rute yang ingin dimuat ulang setiap kali kembali.
misalnya:
bukannya yang berikut ini
menggunakan,
sumber
/
: O Rute saya sekarang terlihat seperti ini://
Coba salah satu dari yang berikut:
sumber
Saya mendapatkan kode ini untuk menghapus cache dan memuat ulang halaman
Melihat
Pengendali
Injector: $ scope, $ state, $ stateParams, $ templateCache
sumber
Gunakan kode berikut tanpa pemberitahuan reload yang intim kepada pengguna. Itu akan membuat halaman
sumber
Saya telah berjuang keras dengan masalah ini selama berbulan-bulan, dan satu-satunya solusi yang bekerja untuk saya adalah ini:
sumber
$window.location.reload()
yang OP secara khusus sebutkan tidak bekerja dengan baik dalam kasusnya.