Le problème que je rencontre peut être tangentiel, mais comme la recherche sur Google m'a amené à cette question, cela pourrait être approprié. Le problème soulève sa tête laide pour moi lors de l'utilisation du routeur UI, mais uniquement lorsque j'essaie de rafraîchir la page avec le bouton de rafraîchissement du navigateur. L'application utilise UI Router avec un état abstrait parent, puis les états enfants hors parent. Sur la run()
fonction d' application , il y a une $state.go('...child-state...')
commande. L'état parent utilise un resolve
, et au début, je pensais qu'un contrôleur enfant s'exécutait deux fois.
Tout va bien avant que l'URL ait ajouté le hachage.
www.someoldwebaddress.org
Ensuite, une fois que l'URL a été modifiée par UI Router,
www.someoldwebaddress.org#/childstate
... puis lorsque je rafraîchis la page avec le bouton d'actualisation du navigateur , le système se $stateChangeStart
déclenche deux fois et pointe à chaque fois sur le childstate
.
Le resolve
sur l'état parent est ce qui se déclenche deux fois.
C'est peut-être un coup de coude; quoi qu'il en soit, cela semble éliminer le problème pour moi: dans la zone de code où $stateProvider
est d'abord invoqué, vérifiez d' abord si le window.location.hash est une chaîne vide. Si c'est le cas, tout va bien; si ce n'est pas le cas, définissez window.location.hash sur une chaîne vide. Ensuite, il semble que le $state
seul essaie d'aller quelque part une fois plutôt que deux fois.
De plus, si vous ne souhaitez pas vous fier à la valeur par défaut de l'application run
et state.go(...)
, vous pouvez essayer de capturer la valeur de hachage et utiliser la valeur de hachage pour déterminer l'état enfant sur lequel vous étiez juste avant l'actualisation de la page et ajouter une condition à la zone de votre code où vous définissez le state.go(...)
.
ng-app
et avec un bootstrap manuel). Vérifiez également si vous avez attaché votre contrôleur à plusieurs éléments (avec ng-controller).