web-dev-qa-db-fra.com

Différence entre $ state.transitionTo () et $ state.go () dans Angular ui-router

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?

102
Barcelona

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() utilise transitionTo en interne. $state.go() est recommandé dans la plupart des situations.

145
Michelle Tilley

$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');
9
Mistalis