Właśnie dostałem prośbę od naszego zespołu ds. Kontroli jakości, który moim zdaniem brzmi śmiesznie. W takim przypadku: załóżmy, że jesteś już w stanie "około"/stronie w aplikacji kątowej, a po ponownym kliknięciu na stan "o" w górnym menu, chcesz ponownie załadować stronę "o". Strona about
nie pobiera danych z dowolnego miejsca, nawiasem mówiąc, przeładowanie jest po prostu równoznaczne z miganiem.AngularJS z ui.router: przeładuj stronę po kliknięciu tego samego linku stanu
Dla config państwowej w moim kątowej aplikacji jest tak:
.state('about', {
url: '/about',
templateUrl: '/path/to/about.html',
controller: 'aboutCtrl as aboutView'
});
I w górę menu, mamy odnośnik wskazujący na ten stan:
<a ui-sref="about">About</a>
Próbowałem wielu rzeczy aby to działało: kliknięcie łącza powoduje ponowne załadowanie tego samego stanu.
Rzeczy takie jak $state.go('about', {}, {reload: true});
lub $state.transitionTo('about', {}, {reload: true});
nie działają, ponieważ łącza są statyczne.
Ostatnią próbą, jaką obecnie próbuję, jest manipulowanie operacją przeładowania w fazie run
fazy Angulara przez odsłuchanie zdarzenia '$stateChangeSuccess'
, ale nie sądzę, że to zadziała, ponieważ w ogóle nie nastąpi zmiana stanu, jeśli klikniesz link 'about'
, gdy masz rację w tym stanie.
Czy są jakieś sposoby obejścia tego? Dzięki
"Właśnie dostałem prośbę od naszego zespołu QA, który moim zdaniem brzmi śmiesznie" - made my day TY – scniro
zadowolony masz pośmiać. Sądzę, że jest to absurdalna prośba i myślę, że nie da się tego zrobić z ui.router. Czekam, aż jakiś ekspert mnie oświeci. Dzięki – TonyGW
Nie sądzę, aby ponowne załadowanie strony (co według mnie jest statyczne) jest dobrym sposobem na to, aby przejść z kilku powodów - Twoja aplikacja powinna po prostu wskazać użytkownikowi, że jest już na tej stronie. Dobrym przykładem jest animacja Material Design po wielokrotnym kliknięciu tej samej karty - https://material.angularjs.org/latest/#/demo/material.components.zakładki – JaKXz