<a ng-href="#" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Saya ingin memuat ulang halaman. Bagaimana saya bisa melakukan ini?
<a ng-href="#" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Saya ingin memuat ulang halaman. Bagaimana saya bisa melakukan ini?
Jawaban:
Anda dapat menggunakan reload
metode $route
layanan. Suntikkan $route
di pengontrol Anda dan kemudian buat metode reloadRoute
di komputer Anda $scope
.
$scope.reloadRoute = function() {
$route.reload();
}
Maka Anda dapat menggunakannya pada tautan seperti ini:
<a ng-click="reloadRoute()" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Metode ini akan menyebabkan rute saat ini dimuat ulang. Namun jika Anda ingin melakukan penyegaran penuh, Anda bisa menyuntikkan $window
dan menggunakannya:
$scope.reloadRoute = function() {
$window.location.reload();
}
Kemudian edit (ui-router):
Seperti yang disebutkan oleh JamesEddyEdwards dan Dunc dalam jawaban mereka, jika Anda menggunakan angular-ui / ui-router Anda dapat menggunakan metode berikut untuk memuat ulang keadaan / rute saat ini. Suntikkan $state
saja $route
dan kemudian Anda memiliki:
$scope.reloadRoute = function() {
$state.reload();
};
window
objek tersedia melalui $window
layanan untuk pengujian dan ejekan yang lebih mudah , Anda dapat menggunakan sesuatu seperti:
$scope.reloadPage = function(){$window.location.reload();}
Dan:
<a ng-click="reloadPage" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Sebagai catatan, saya tidak berpikir $ route.reload () sebenarnya memuat ulang halaman, tetapi hanya rute .
$window
sebagai gantinya window
.
$window
doktor , terutama karena reloadPage
akan (lebih baik) dapat diuji saat digunakan $window
.
location.reload();
Apakah caranya.
<a ng-click="reload()">
$scope.reload = function()
{
location.reload();
}
Tidak perlu untuk rute atau apa pun hanya js tua biasa
Jika menggunakan Angulars ui-router lebih maju yang saya pasti akan merekomendasikan maka Anda sekarang dapat menggunakan:
$state.reload();
Yang pada dasarnya melakukan hal yang sama dengan jawaban Dunc.
Solusi saya untuk menghindari infinite loop adalah dengan membuat negara lain yang telah melakukan pengalihan:
$stateProvider.state('app.admin.main', {
url: '/admin/main',
authenticate: 'admin',
controller: ($state, $window) => {
$state.go('app.admin.overview').then(() => {
$window.location.reload();
});
}
});
2 Sudut
Saya menemukan ini ketika mencari Angular 2+, jadi inilah caranya:
$window.location.reload();
Cukup mudah untuk hanya menggunakan $route.reload()
(jangan lupa untuk menyuntikkan $ route ke controller Anda), tetapi dari contoh Anda, Anda bisa menggunakan "href" alih-alih "ng-href":
<a href="" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Anda hanya perlu menggunakan ng-href untuk melindungi pengguna dari tautan yang tidak valid yang disebabkan oleh mereka mengklik sebelum Angular mengganti konten tag {{}}.
Pada Angular 1.5 - setelah mencoba beberapa solusi di atas yang ingin memuat ulang hanya data tanpa refresh halaman penuh, saya punya masalah dengan memuat data dengan benar. Saya perhatikan, bahwa ketika saya pergi ke rute lain dan kemudian saya kembali ke arus, semuanya berfungsi dengan baik, tetapi ketika saya hanya ingin memuat ulang rute saat ini menggunakan $route.reload()
, maka beberapa kode tidak dijalankan dengan benar. Kemudian saya mencoba mengalihkan ke rute saat ini dengan cara berikut:
$scope.someFuncName = function () {
//go to another route
$location.path('/another-route');
};
dan dalam konfigurasi modul, tambahkan yang lain when
:
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/first-page', {
templateUrl: '/first-template',
controller: 'SomeCtrl'
}).when('/another-route', {//this is the new "when"
redirectTo: '/first-page'
});
}])
dan itu bekerja dengan baik untuk saya. Itu tidak me-refresh seluruh halaman, tetapi hanya menyebabkan pengontrol dan templat saat ini memuat ulang. Saya tahu ini agak berantakan, tapi itu satu-satunya solusi yang saya temukan.
var reload = $location.url(); $location.url(''); $timeout(function() { $location.url(reload); });
; tidak perlu membuat rute acak. Tetapi akan menarik untuk melihat kode apa yang tidak dievaluasi ulang untuk Anda. Sepertinya even redirectTo
dan resolve
fungsi dijalankan kembali secara normal$route.reload()
(lihat console.log's).
<a title="Pending Employee Approvals" href="" ng-click="viewPendingApprovals(1)">
<i class="fa fa-user" aria-hidden="true"></i>
<span class="button_badge">{{pendingEmployeeApprovalCount}}</span>
</a>
dan di controller
$scope.viewPendingApprovals = function(type) {
if (window.location.hash.substring(window.location.hash.lastIndexOf('/') + 1, window.location.hash.length) == type) {
location.reload();
} else {
$state.go("home.pendingApproval", { id: sessionStorage.typeToLoad });
}
};
dan dalam file rute
.state('home.pendingApproval', {
url: '/pendingApproval/:id',
templateUrl: 'app/components/approvals/pendingApprovalList.html',
controller: 'pendingApprovalListController'
})
Jadi, Jika id yang dilewatkan dalam url sama dengan apa yang datang dari fungsi yang disebut dengan mengklik jangkar, maka cukup memuat ulang, kalau tidak ikuti rute yang diminta.
Tolong bantu saya meningkatkan jawaban ini, jika ini membantu. Any, saran dipersilahkan.
Ini dapat dilakukan dengan memanggil metode reload () dalam JavaScript.
location.reload();