Karşılaştığım sorun teğetsel olabilir, ancak googling beni bu soruya getirdiğinden, bu uygun olabilir. Sorun, UI Router'ı kullanırken benim için çirkin kafasını ortaya çıkarıyor, ancak yalnızca tarayıcı yenileme düğmesiyle sayfayı yenilemeye çalıştığımda. Uygulama, bir üst soyut durumuyla UI Router'ı kullanır ve daha sonra alt, üst öğeyi belirtir. Uygulama run()
işlevinde bir $state.go('...child-state...')
komut vardır. Ana devlet a kullanır resolve
ve ilk başta belki bir çocuk denetleyicisinin iki kez yürüttüğünü düşündüm.
URL karma eklenmeden önce her şey yolunda.
www.someoldwebaddress.org
Ardından, url UI Router tarafından değiştirildikten sonra,
www.someoldwebaddress.org#/childstate
... ve sayfayı tarayıcı yenileme düğmesiyle yenilediğimde , $stateChangeStart
iki kez tetiklenir ve her seferinde childstate
.
resolve
Ebeveyn durumuna iki kez ateş budur.
Belki de bu bir çamurdur; ne olursa olsun, bu benim için sorunu ortadan kaldırmak gibi görünüyor: $stateProvider
ilk çağrılan kod alanında , önce window.location.hash boş bir dize olup olmadığını kontrol edin . Eğer öyleyse, her şey iyidir; değilse, window.location.hash dosyasını boş bir dizeye ayarlayın. Sonra $state
sadece iki kez yerine bir yere gitmek için çalışır gibi görünüyor .
Uygulamanın varsayılan güvenmek istemiyorsanız Ayrıca, run
ve state.go(...)
, sen karma değerini yakalamak ve sadece sayfa yenileme önce bulunduğu çocuk durumunu belirlemek için karma değerini kullanın ve bölgede bir koşul ekleyin deneyebilirsiniz senin kodunu ayarladığınız yer state.go(...)
.
ng-app
manuel önyükleme ile ve manuel önyükleme ile otomatik olarak başlatılmasını sağlayarak ). Ayrıca denetleyicinizi birden çok öğeye (ng denetleyicisiyle) bağlayıp bağlamadığınızı kontrol edin.