Masalah yang saya temui mungkin bersifat tangensial, tetapi karena googling membawa saya ke pertanyaan ini, ini mungkin tepat. Masalahnya adalah kepalanya yang jelek bagi saya ketika menggunakan Router UI, tetapi hanya ketika saya mencoba untuk me-refresh halaman dengan tombol refresh browser. Aplikasi ini menggunakan Router UI dengan keadaan abstrak induk, dan kemudian anak menyatakan dari induknya. Pada run()
fungsi aplikasi , ada $state.go('...child-state...')
perintah. Status induk menggunakan a resolve
, dan pada awalnya saya pikir mungkin pengendali anak mengeksekusi dua kali.
Semuanya baik-baik saja sebelum URL memiliki hash yang ditambahkan.
www.someoldwebaddress.org
Kemudian setelah url telah dimodifikasi oleh UI Router,
www.someoldwebaddress.org#/childstate
... dan kemudian ketika saya me-refresh halaman dengan tombol refresh browser , $stateChangeStart
api dua kali, dan setiap kali menunjuk ke childstate
.
Pada resolve
status induk adalah apa yang menembak dua kali.
Mungkin ini adalah kludge; bagaimanapun, hal ini tampaknya menghilangkan masalah bagi saya: di area kode di mana $stateProvider
pertama kali dipanggil, periksa terlebih dahulu untuk melihat apakah window.location.hash adalah string kosong. Jika ya, semuanya baik; jika tidak, maka atur window.location.hash ke string kosong. Maka tampaknya $state
hanya mencoba untuk pergi ke suatu tempat sekali daripada dua kali.
Juga, jika Anda tidak ingin bergantung pada default aplikasi run
dan state.go(...)
, Anda dapat mencoba untuk menangkap nilai hash dan menggunakan nilai hash untuk menentukan status anak tempat Anda berada sebelum penyegaran halaman, dan menambahkan kondisi ke area di Anda kode tempat Anda mengatur state.go(...)
.
ng-app
dan dengan bootstrap manual). Juga periksa apakah Anda telah memasang controller Anda ke beberapa elemen (dengan ng-controller).