Perbedaan antara $ state.transitionTo () dan $ state.go () di Angular ui-router

108

Di AngularJS, saya melihat terkadang kami menggunakan $state.transitionTo() dan terkadang kami menggunakan $state.go(). Adakah yang bisa memberi tahu saya bagaimana perbedaannya dan kapan yang satu harus digunakan di atas yang lain?

Barcelona
sumber

Jawaban:

151

Apakah Anda mengacu pada AngularUI Router ? Jika demikian, wiki menentukan perbedaannya :

$ state.go (ke [, toParams] [, opsi])

Mengembalikan Janji yang mewakili keadaan transisi.

Metode kenyamanan untuk bertransisi ke keadaan baru. $state.gomemanggil secara $state.transitionTointernal tetapi secara otomatis menyetel opsi ke { location: true, inherit: true, relative: $state.$current, notify: true }. Hal ini memungkinkan Anda untuk dengan mudah menggunakan absolut atau relatif ke jalur dan hanya menentukan parameter yang ingin Anda perbarui (sambil membiarkan parameter yang tidak ditentukan mewarisi dari keadaan saat ini).


$ state.transitionTo (ke, toParams [, opsi])

Mengembalikan Janji yang mewakili keadaan transisi.

Metode tingkat rendah untuk bertransisi ke keadaan baru. $state.go()digunakan secara transitionTointernal. $state.go()direkomendasikan dalam banyak situasi.

Michelle Tilley
sumber
1
Saya menemukan lebih banyak informasi yang saya butuhkan dari tautan yang Anda berikan. Terima kasih banyak Brandon :)
Barcelona
1
Rupanya, nilai yang dimasukkan dalam tampilan tidak hilang jika saya memicu kembali tampilan menggunakan transisiTo. Pokoknya kita bisa memaksa menyegarkan nilai / js / view? PS -
Pemuatan
10

$state.transitionTotransit ke negara bagian baru. Dalam kebanyakan kasus, Anda tidak harus menggunakannya, Anda mungkin lebih suka$state.go .

Dibutuhkan beberapa parameter dalam sebuah optionsobjek:

  • location: Jika trueakan memperbarui url di bilah lokasi, jika falsetidak. Jika string "replace", akan memperbarui url dan juga mengganti catatan riwayat terakhir.
  • inherit: Jika trueakan mewarisi parameter url dari url saat ini.
  • relative (stateObject, default null) : Saat bertransisi dengan jalur relatif (mis. '^'), tentukan status yang menjadi relatif.
  • notify: Jika true, akan disiarkan $stateChangeStartdan $stateChangeSuccessacara.
  • reload: Jika trueakan memaksa transisi meskipun status atau parameter tidak berubah, alias memuat ulang status yang sama.

$state.goadalah semacam pintasan yang memanggil $state.transitionTodengan opsi default:

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

Ini lebih nyaman karena synthax lebih sederhana. Anda dapat memanggilnya hanya dengan nama negara bagian.

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