ui-router - rechargement état actuel
Je me demande comment faire pour "recharger" un état actuel, en passant d'un nouveau paramètre de sorte que mon contrôleur reçoit ré-initialisé.
Je suis en train de mettre en place une recherche dans ma barre latérale de contrôle et de la recherche initiale utilise $état.aller à la transition à mon nouvel état comme ceci:
if ($event.type === 'click' || $event.keyCode === keyCodes.enter) {
$state.go("people.search", { search: vm.searchText });
Si je suis sur un autre état de l'application, et le code ci-dessus fonctionne, tout fonctionne correctement. Voilà, je passe dans le terme de recherche comme paramètre $et de l'état.allez les transitions de mon état, de la population.l'état de la recherche et de mon peuple contrôleur (contenant la fonction de recherche) est touché. Mais une fois que je suis sur le peuple.l'état de la recherche et essayez d'utiliser la commande de recherche, les gens contrôleur de code ne pas se faire frapper plus et les paramètres ne sont pas d'être mis à jour.
J'ai essayé de modifier le code de cette:
$state.go("people.search", { search: vm.searchText }, { location: "replace" });
Maintenant, quand je suis sur l'état actuel, cela permettra de mettre à jour l'url de mon nouveau terme de recherche, mais le code du contrôleur n'est pas à la cuisson.
J'ai besoin d'un moyen de forcer un rechargement de l'état de même que je suis actuellement sur, de sorte que le nouveau paramètre de recherche sera mis à jour et les gens contrôleur de code re-fonctionne.
Comment puis-je recharger l'état actuel?
OriginalL'auteur Pacificoder | 2013-11-20
Vous devez vous connecter pour publier un commentaire.
À l'intérieur de javascript, Vous pouvez appeler l'état actuel comme suit:
$state.go ('.', { search: vm.searchText } )
De la version 1.2.5 vous pouvez également utiliser de rechargement de l'état:
$state.reload()
C'est tout gentil, mais je préfère un moyen de recharger état avec différents paramètres dans une directive.
J'ai donc regardé à l'intérieur de l'interface utilisateur-routeur code source pour comprendre que uiSref est ignorée lorsque l'état reste le même. S'il est bon pour éviter le rechargement si rien n'a vraiment changé, la modification de paramètres à l'intérieur de l'état pourrait être utile dans certains cas.
J'ai donc créé mon propre directive uiSrefParams:
https://gist.github.com/IlanFrumer/8281567
Exemple
Espère que ça aide.
$state.reload()
a fait le tour, u m'a sauvé la nuit, thx.ui-sref
fonctionne très bien avec les params seulement (de la même manière que votreui-sref-params
personnalisé directive) depuis v0.2.11 (2014-08-26). Voir page Suivante lien Exemple dans la doc.OriginalL'auteur Ilan Frumer
essayer cette
OriginalL'auteur shailendra pathak
Ne remarque que de 0.2.14 vous avez également la possibilité de simplement recharger l'état actuel et non pas celle du parent.
Donc
$state.go(people.search, {}, {reload: true});
permettrait de recharger lapeople
de l'état, ainsi que tous ses enfants.Tout
$state.go(people.search, {}, {reload: "people.search"});
ne serait pas recharger lapeople
état, mais permettrait de rechargerpeople.search
et son enfant.OriginalL'auteur Shyamal Parikh
Notez également que votre état devrait avoir
?param
à la fin pour faire de cette solution de travail. J'ai pris sur ce, parce que$location.search()
travailler sans elle.OriginalL'auteur Efog