Dans AngularJS, je vois que nous utilisons parfois $state.transitionTo()
et parfois $state.go()
. Quelqu'un peut-il me dire en quoi ils diffèrent et quand l'un devrait être utilisé sur l'autre?
Faites-vous référence au AngularUI Router ? Si oui, le wiki spécifie les différences :
$ state.go (to [ toParams] [ options])
Retourne une promesse représentant l'état de la transition.
Méthode pratique pour la transition vers un nouvel état.
$state.go
Appelle$state.transitionTo
En interne, mais définit automatiquement les options sur{ location: true, inherit: true, relative: $state.$current, notify: true }
. Cela vous permet d'utiliser facilement un chemin absolu ou relatif et de spécifier uniquement les paramètres que vous souhaitez mettre à jour (tout en laissant les paramètres non spécifiés hériter de l'état actuel).$ state.transitionTo (to, toParams [ options])
Retourne une promesse représentant l'état de la transition.
Méthode de bas niveau pour la transition vers un nouvel état.
$state.go()
utilisetransitionTo
en interne.$state.go()
est recommandé dans la plupart des situations.
$state.transitionTo
transite dans un nouvel état. Dans la plupart des cas, vous ne devez pas l'utiliser, vous préférerez peut-être $state.go
_ .
Il faut quelques paramètres dans un objet options
:
location
: Si true
mettra à jour l'URL dans la barre d'adresse, si false
ne le sera pas. Si string "replace"
, mettra à jour l'URL et remplacera également le dernier enregistrement d'historique.inherit
: Si true
héritera des paramètres d'URL de l'URL actuelle.relative
(stateObject, par défaut null
): lors de la transition avec un chemin relatif (par exemple, '^'), définit à partir de quel état sera relatif.notify
: Si true
, diffusera $stateChangeStart
et $stateChangeSuccess
événements.reload
: Si true
forcera la transition même si l'état ou les paramètres n'ont pas changé, c'est-à-dire un rechargement du même état.$state.go
est une sorte de raccourci qui appelle $state.transitionTo
avec les options par défaut:
location
: true
inherit
: true
relative
: $state.$current
notify
: true
reload
: false
C'est plus pratique car le synthax est plus simple. Vous pouvez l'appeler uniquement avec un nom d'état.
$state.go('home');