Vous pouvez utiliser la reload
méthode du $route
service. Injectez $route
dans votre contrôleur puis créez une méthode reloadRoute
sur votre $scope
.
$scope.reloadRoute = function() {
$route.reload();
}
Ensuite, vous pouvez l'utiliser sur le lien comme ceci:
<a ng-click="reloadRoute()" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Cette méthode provoquera le rechargement de l'itinéraire actuel. Si vous souhaitez cependant effectuer une actualisation complète, vous pouvez injecter $window
et utiliser cela:
$scope.reloadRoute = function() {
$window.location.reload();
}
Edition ultérieure (ui-router):
Comme mentionné par JamesEddyEdwards et Dunc dans leurs réponses, si vous utilisez angular-ui / ui-router, vous pouvez utiliser la méthode suivante pour recharger l'état / la route en cours. Injectez simplement $state
au lieu de $route
et vous avez:
$scope.reloadRoute = function() {
$state.reload();
};
window
objet est rendu disponible via le$window
service pour des tests et des moqueries plus faciles , vous pouvez utiliser quelque chose comme:Et :
En remarque, je ne pense pas que $ route.reload () recharge réellement la page, mais seulement la route .
la source
$window
au lieu dewindow
.$window
documentation , principalement parcereloadPage
qu'il serait (mieux) testable lorsqu'il est utilisé$window
.Fait l'affaire.
Pas besoin de routes ou de quoi que ce soit de vieux js
la source
Similaire à la réponse d'Alexandrin, mais en utilisant $ state plutôt que $ route:
(D'après la réponse SO de JimTheDev ici .)
la source
Si vous utilisez Angulars ui-router plus avancé que je recommanderais sans hésiter, vous pouvez maintenant simplement utiliser:
Ce qui fait essentiellement la même chose que la réponse de Dunc.
la source
Ma solution pour éviter la boucle infinie était de créer un autre état ayant effectué la redirection:
la source
Angulaire 2+
J'ai trouvé ceci en recherchant Angular 2+, voici donc le chemin:
la source
C'est assez facile à utiliser
$route.reload()
(n'oubliez pas d'injecter $ route dans votre contrôleur), mais à partir de votre exemple, vous pouvez simplement utiliser "href" au lieu de "ng-href":Il vous suffit d'utiliser ng-href pour protéger l'utilisateur des liens non valides causés par un clic avant qu'Angular n'ait remplacé le contenu des balises {{}}.
la source
Sur Angular 1.5 - après avoir essayé certaines des solutions ci-dessus voulant recharger uniquement les données sans actualisation complète de la page, j'ai eu des problèmes pour charger correctement les données. J'ai remarqué cependant que lorsque je vais sur une autre route et que je reviens au courant, tout fonctionne bien, mais quand je veux recharger uniquement la route actuelle en utilisant
$route.reload()
, alors une partie du code n'est pas exécutée correctement. Ensuite, j'ai essayé de rediriger vers l'itinéraire actuel de la manière suivante:et dans la configuration du module, ajoutez-en un autre
when
:et cela fonctionne très bien pour moi. Il n'actualise pas la page entière, mais provoque uniquement le rechargement du contrôleur et du modèle actuels. Je sais que c'est un peu piraté, mais c'est la seule solution que j'ai trouvée.
la source
var reload = $location.url(); $location.url(''); $timeout(function() { $location.url(reload); });
; pas besoin de créer des itinéraires aléatoires. Mais il serait intéressant de voir quel code ne réévalue pas pour vous. Il semble que même lesredirectTo
s et lesresolve
fonctions se réexécutent normalement$route.reload()
(regardez le fichier console.log).et dans le contrôleur
et dans le fichier d'itinéraire
Donc, si l'id passé dans l'url est le même que ce qui vient de la fonction appelée en cliquant sur l'ancre, alors rechargez simplement, sinon suivez l'itinéraire demandé.
S'il vous plaît, aidez-moi à améliorer cette réponse, si cela vous aide. Toutes les suggestions sont les bienvenues.
la source
Cela peut être fait en appelant la méthode reload () de l'objet window en JavaScript brut
la source
Je suggérerais de renvoyer la page. Suggestion officielle
https://docs.angularjs.org/guide/$location
la source
Cela peut être fait en appelant la méthode reload () en JavaScript.
la source