Diferença entre $ state.transitionTo () e $ state.go () no ui-router Angular

108

No AngularJS, vejo que às vezes usamos $state.transitionTo()e às vezes usamos $state.go(). Alguém pode me dizer como eles diferem e quando um deve ser usado em vez do outro?

Barcelona
fonte

Respostas:

151

Você está se referindo ao Roteador AngularUI ? Nesse caso, o wiki especifica as diferenças :

$ state.go (to [, toParams] [, options])

Retorna uma promessa que representa o estado da transição.

Método de conveniência para a transição para um novo estado. $state.gochama $state.transitionTointernamente, mas define automaticamente as opções para { location: true, inherit: true, relative: $state.$current, notify: true }. Isso permite que você use facilmente um caminho absoluto ou relativo para especificar apenas os parâmetros que deseja atualizar (enquanto permite que parâmetros não especificados sejam herdados do estado atual).


$ state.transitionTo (to, toParams [, options])

Retorna uma promessa que representa o estado da transição.

Método de baixo nível para fazer a transição para um novo estado. $state.go()usa transitionTointernamente. $state.go()é recomendado na maioria das situações.

Michelle Tilley
fonte
1
Encontrei mais informações de que preciso nos links fornecidos. Muito obrigado Brandon :)
Barcelona
1
Aparentemente, os valores inseridos na visualização não são eliminados se eu acionar novamente a visualização usando transiçãoTo. De qualquer forma, podemos forçar a atualização dos valores / js / view? PS - O recarregamento da página não é uma opção, pois a visualização é uma sobreposição
Swanidhi
10

$state.transitionTotransite para um novo estado. Na maioria dos casos, você não precisa usá-lo, pode preferir$state.go .

Leva alguns parâmetros em um optionsobjeto:

  • location: Se trueatualizará o url na barra de localização, se falsenão. Se for string "replace", irá atualizar o url e também substituir o último registro do histórico.
  • inherit: Se trueirá herdar os parâmetros de url do url atual.
  • relative (stateObject, padrão null) : Ao fazer a transição com caminho relativo (por exemplo, '^'), define de qual estado será relativo.
  • notify: Se true, vai transmitir $stateChangeStarte $stateChangeSuccesseventos.
  • reload: Se trueforçará a transição mesmo que o estado ou os parâmetros não tenham mudado, também conhecido como uma recarga do mesmo estado.

$state.goé uma espécie de atalho que chama $state.transitionTocom opções padrão:

  • location: true
  • inherit: true
  • relative: $state.$current
  • notify: true
  • reload: false

É mais conveniente porque a sintaxe é mais simples. Você pode chamá-lo apenas com um nome de estado.

$state.go('home');
Mistalis
fonte