web-dev-qa-db-ja.com

Angular ui-routerの$ state.transitionTo()と$ state.go()の違い

AngularJSでは、$state.transitionTo()を使用することもあれば、$state.go()を使用することもあります。誰がどのように違いがあり、いつ一方を他方の上で使用する必要があるか教えてもらえますか?

102
Barcelona

AngularUI Router を参照していますか?その場合、wiki 違いを指定

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

遷移の状態を表すPromiseを返します。

新しい状態に移行するための便利な方法。 $state.go$state.transitionToを内部的に呼び出しますが、オプションを自動的に{ location: true, inherit: true, relative: $state.$current, notify: true }に設定します。これにより、絶対パスまたは相対パスを簡単に使用して、更新するパラメーターのみを指定できます(未指定のパラメーターは現在の状態から継承できます)。


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

遷移の状態を表すPromiseを返します。

新しい状態に移行するための低レベルの方法。 $state.go()は内部でtransitionToを使用します。 $state.go()は、ほとんどの状況で推奨されます。

145
Michelle Tilley

$state.transitionTo 新しい状態に移行します。ほとんどの場合、使用する必要はありません。$state.goを好むかもしれません。

optionsオブジェクトでいくつかのパラメーターを受け取ります。

  • locationtrueがロケーションバーのURLを更新する場合、falseが更新しない場合。文字列"replace"の場合、URLを更新し、最後の履歴レコードも置き換えます。
  • inherittrueが現在のURLからURLパラメーターを継承する場合。
  • relative(stateObject、デフォルトのnull:相対パス(例: '^')で移行する場合、どの状態からの相対状態かを定義します。
  • notifytrueの場合、$stateChangeStartおよび$stateChangeSuccessイベントをブロードキャストします。
  • reload:状態またはパラメーターが変更されていなくてもtrueが強制的に遷移する場合、同じ状態のリロードとも呼ばれます。

$state.go は、デフォルトのオプションで$state.transitionToを呼び出す一種のshortcutです。

  • locationtrue
  • inherittrue
  • relative$state.$current
  • notifytrue
  • reloadfalse

シンタックスがより単純であるため、より便利です。状態名でのみ呼び出すことができます。

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