KontekstCzysty projekt dla scentralizowanej nawigacji?
pojedyncze strony/ajax web app
Podstawowa struktura kodu
LocationManager (odpowiedzialny za aktualizowanie hash przeglądarki i przełączania lokalizację aplikacji do innej płytki)
Przepływ strony/płytek
Podstawowe informacje> Informacje bytowe> Vehicle Information> Opcje zakupu> Przegląd Zamówienie> Enter Płatność i przedłożyć
Problem
Gdy użytkownik nawiguje z możliwości zakupu na Przeglądzie zleceń, długa (5- 8 sekund) wezwanie serwisowe służy do obliczania szczegółów zamówienia. Po rozstrzygnięciu połączenia wywołanie zwrotne ma na celu nawigację użytkownika do strony zamówienia recenzji. Problem polega na tym, że jeśli użytkownik kliknie z powrotem w tym czasie i wróci do informacji gospodarstwa domowego, jak tylko połączenie zostanie rozstrzygnięte, zostaną oni "automatycznie" przeniesieni do zamówienia przeglądu. Bardzo niezręczne wrażenia użytkownika.
Ograniczenia
Anulowanie połączenia nie jest rozwiązaniem. Potrzebujesz rozwiązania do obsługi nawigacji.
Aktualny proponowana realizacja
Zapisz "currentLocation" przed dokonaniem połączenia calculateOrder. Przeprowadź "currentLocation" w oddzwanianiu do metody setLocation zgodnie z przeznaczeniem StartStartingPoint. Wewnątrz setLocation metoda if(intendedStartingPoint === Locationmanager.currentLocation) {//Navigate}
Podsumowując, jeśli użytkownik zmieni położenie, podczas gdy rozmowa jest w toku, po uchwale zawinięcia jest, nie będziemy poruszać ponieważ użytkownik nie spodziewa się poruszać na Przeglądzie zleceń w tym momencie.
To działa, prawda?
The Catch
Mamy wiele miejsc w aplikacji gdzie setLocation nazywa ciągu zwrotnego dla długotrwałych rozmowy. Oznacza to, że będę musiał zaktualizować wszystkie wywołania setLocation za pomocą nowego parametru - objectiveStartingPoint. Chociaż ma to dla mnie sens, wygląda na to, że ma potencjał, by się trochę zagracić.
Jakieś pomysły, jak to oczyścić i zcentralizować?
zawinąć wywołanie setLocation w wyspecjalizowanych funkcji, dostarczyć go do zwrotnego weryfikacja zamówienia i dokonać specjalistyczna funkcja również przyjmuje parametr desiredStartingPoint jako parametr i obsługuje logikę predictStartingPoint? – Soggiorno
Co powiesz na wyłączenie przycisku Wstecz (lub dowolnej akcji) do momentu, aż połączenie zostanie przywrócone? W przeciwnym razie po prostu sprawdź swoją aktualną lokalizację na wezwanie powrotu i przekierowanie tylko, jeśli na prawym kafelku. (Uwaga: w tym przypadku problem może nadal powracać użytkownik, który modyfikuje niektóre dane, a następnie powraca do właściwego kafelka bez ponownego uruchamiania połączenia, co powoduje przekierowanie bez zapisywania/weryfikacji nowych danych, więc powinieneś najmniej automatycznie ponownie uruchomić wywołanie zmiany danych, ale po prostu anulowanie połączenia w sprawie zmiany nawigacji/danych byłoby o wiele bardziej idealne.) –
@ SzabolcsPáll nie można wyłączyć przycisków przeglądarki na stronie internetowej. Rozwiązanie, które zaproponowałeś w inny sposób, zostało opisane w pytaniu. – antonpug