web-dev-qa-db-fra.com

Changer l'état sans changer l'historique du navigateur dans angular ui-router

Supposons que nous ayons une logique comme celle-ci:

  • De l'état A, passez à l'état B.
  • Chaque fois que nous arrivons à l'état B, l'application nous redirige toujours vers l'état C en appelant $state.go(stateC)
  • Maintenant, nous sommes dans l'état C

Ma question est de savoir comment revenir à l'état A à partir de l'état C (étant donné que l'état A peut être n'importe quel état que nous ne connaissons pas au moment de l'exécution, ce qui signifie que l'utilisateur peut accéder à l'état B à partir de tout autre état)

21
Thịnh Phạm

Utilisez l'option location avec la valeur "replace" ...

$state.go(stateC, null, {
    location: 'replace'
})

Voir https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_go

location - {boolean = true | string =} - Si true mettra à jour l'url dans la barre d'emplacement, si false Ne fera pas. Si chaîne, doit être "replace", qui mettra à jour l'URL et remplacera également le dernier enregistrement d'historique .

36
Phil