J'utilise Angular UI Router et je voudrais recharger l'état actuel et actualiser toutes les données / réexécuter les contrôleurs pour l'état actuel et son parent.
J'ai 3 niveaux d'état: directory.organisations.details
directory.organisations contient un tableau avec une liste d'organisations. Cliquer sur un élément dans le tableau charge directory.organisations.details avec $ StateParams en passant l'ID de l'élément. Donc, dans l'état des détails, je charge les détails de cet élément, les modifie puis enregistre les données. Très bien jusqu'à présent.
Maintenant, je dois recharger cet état et actualiser toutes les données.
J'ai essayé:
$state.transitionTo('directory.organisations');
Ce qui va à l'état parent mais ne recharge pas le contrôleur, je suppose que le chemin n'a pas changé. Idéalement, je veux simplement rester dans l' état directory.organisations.details et actualiser toutes les données dans le parent également.
J'ai aussi essayé:
$state.reload()
J'ai vu cela sur l'API WIKI pour $ state.reload "(bug avec les contrôleurs qui se réinstalle en ce moment, corrige bientôt)."
Toute aide serait appréciée?
la source
$state.transitionTo($state.current, $stateParams, {reload:true, inherit:false})
il ajouter le code ? Avoir ce même problème avec le rechargement de mes états, c'est perdre toutes les données.Réponses:
J'ai trouvé que c'était le moyen de travail le plus court pour rafraîchir avec ui-router:
Mise à jour pour les versions plus récentes:
Qui est un alias pour:
Documentation: https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_reload
la source
ui-router
méthode pour ça je pense. Faiteswindow.location.reload(true)
.$window.location.reload();
. Bien que cela semble un peu exagéré, cela pourrait rendre les tests / moqueries / connaître toutes les dépendances un morceau de code a des choses un peu plus faciles.Cette solution fonctionne dans AngularJS V.1.2.2:
la source
resolve
articles de l'État?Ce serait la solution finale. (inspiré par le post de @ Hollan_Risley)
Maintenant, chaque fois que vous devez recharger, appelez simplement:
la source
pour cadre ionique
https://github.com/angular-ui/ui-router/issues/582
la source
$state.go
n'a pas réussi à rediriger vers un nouvel état. Merci @RouR. J'ai sauvé ma journée.$state
? Je cours ionique 1.4.0, angulaire 1.5.3L'approche la plus propre serait probablement la suivante:
Nous pouvons recharger l'état à partir du HTML uniquement.
la source
La réponse de @Holland Risley est maintenant disponible sous forme d'api dans le dernier ui-router.
http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state
la source
la source
la source
si vous voulez recharger votre page entière, comme il semble, injectez simplement $ window dans votre contrôleur, puis appelez
mais si vous souhaitez uniquement recharger votre vue actuelle, injectez $ scope, $ state et $ stateParams (ces derniers au cas où vous auriez besoin de modifier certains paramètres lors de ce rechargement à venir, quelque chose comme votre numéro de page), puis appelez-le dans n'importe quel méthode du contrôleur:
AngularJS v1.3.15 angular-ui-router v0.2.15
la source
Solution idiote qui fonctionne toujours.
la source
Pour la version angulaire v1.2.26, aucun des éléments ci-dessus ne fonctionne. Un ng-click qui appelle les méthodes ci-dessus devra être cliqué deux fois pour que l'état se recharge.
J'ai donc fini par émuler 2 clics en utilisant $ timeout.
la source
Tout a échoué pour moi. La seule chose qui a fonctionné ... est d'ajouter cache-view = "false" dans la vue que je veux recharger en y accédant.
de ce numéro https://github.com/angular-ui/ui-router/issues/582
la source
Je ne sais pas pourquoi aucun de ces éléments ne semblait fonctionner pour moi; celui qui l'a finalement fait était:
C'était avec Angular 1.4.0
la source
J'avais plusieurs vues imbriquées et l'objectif était de recharger une seule avec du contenu. J'ai essayé différentes approches mais la seule chose qui a fonctionné pour moi est:
Dans ce cas, seule la vue nécessaire serait rechargée et la mise en cache fonctionnerait toujours.
la source
Je sais qu'il y a eu un tas de réponses, mais la meilleure façon que j'ai trouvée de le faire sans provoquer une actualisation de la page complète est de créer un paramètre factice sur la route que je veux actualiser, puis lorsque j'appelle la route, je passe dans un nombre aléatoire au paramètre fictif.
puis l'appel à cette route
Fonctionne comme un charme et gère les résolutions.
la source
Vous pouvez utiliser @Rohan answer https://stackoverflow.com/a/23609343/3297761
Mais si vous voulez que chaque contrôleur soit rechargé après un changement de vue, vous pouvez utiliser
la source
Si vous utilisez ionic v1, la solution ci-dessus ne fonctionnera pas car ionic a activé la mise en cache des modèles dans le cadre de $ ionicConfigProvider.
Contournement pour cela est un peu hacky - vous devez définir le cache à 0 dans le fichier ionic.angular.js:
la source
J'ai eu ce problème, ça me faisait mal à la tête, mon routage est lu à partir d'un fichier JSON puis alimenté dans une directive. Je pouvais cliquer sur un état d'interface utilisateur mais je n'ai pas pu recharger la page. Un de mes collègues m'a donc montré un bon petit truc pour ça.
Cela a fonctionné pour moi.
J'espère que ça aide
la source