KontextSauberes Design für zentralisierte Navigation?
Einzelseite/Ajax-Web-App
Grundcodestruktur
Locationmanager (verantwortlich für den Browser-Hash-Aktualisierung und die Anwendung Standort zu einem anderen Kachel schaltend)
Seite/Tile Flow
Basisinformationen> Haushalts Info> Fahrzeug Infos> Bezahlungsoptionen> Bestellung prüfen> Zahlung eingeben und
Problem
Senden Wenn der Benutzer von Bezahlungsoptionen navigiert zu überprüfen, um eine lange (5- 8 Sekunden) Service-Aufruf wird vorgenommen, um Bestelldetails zu berechnen. Nach der Auflösung des Anrufs soll der Rückruf den Benutzer zur Seite "Bestellung prüfen" führen. Das Problem ist, wenn der Benutzer während dieser Zeit zurückklickt und zu Haushaltsinformationen zurückkehrt, sobald der Anruf verrechnet wird, werden diese "automatisch" zum Überprüfungsauftrag gebracht. Sehr peinliche Benutzererfahrung.
Einschränkungen
den Anruf abbrechen, ist keine Option. Brauchen Sie eine Lösung für die Navigation.
derzeitige Implementierung
Speicher "Currentlocation" vor dem calculateOrder Aufruf zu machen. Übergeben Sie den "currentLocation" im Callback an die setLocation-Methode als intentedStartingPoint. Innen setLocation Methode if(intendedStartingPoint === Locationmanager.currentLocation) {//Navigate}
Um es zusammenzufassen, wenn der Benutzer die Lage ändert, während der Anruf im Gange ist, auf die Auflösung des Gesprächs werden wir nicht navigieren, da der Benutzer erwartet nicht Kommentieren navigiert werden an diesem Punkt.
Das funktioniert, oder?
The Catch
Wir haben viele Orte in der App, wo setLocation in einem Rückruf für einen langen Lauf Aufruf aufgerufen wird. Das bedeutet, dass ich alle setLocation Aufrufe mit einem neuen Parameter - intendedStartingPoint - aktualisieren muss. Während es für mich Sinn macht, scheint es, dass es Potenzial hat, ein bisschen überladen zu werden.
Irgendwelche Ideen, wie man es aufräumt und zentralisiert?
Wickeln Sie den setLocation Anruf in einer speziellen Funktion, liefern sie an die Callback Bewertung Ordnung und machen den Fach Funktion nehmen auch einen intendedStartingPoint als Parameter und behandeln die intendedStartingPoint Logik? – Soggiorno
Was ist mit der Deaktivierung der Zurück-Taste (oder einer Aktion), bis der Anruf zurückkehrt? Ansonsten überprüfe einfach deine aktuelle Position bei Anrufrückgabe und redirect nur wenn auf der rechten Kachel. (Hinweis: In diesem Fall kann es immer noch das Problem sein, dass der Benutzer zurückgeht, einige Daten ändert und dann zur richtigen Kachel zurückkehrt, ohne den Anruf neu zu starten, was zur Folge hat, dass die neuen Daten nicht gespeichert/verifiziert werden Am wenigsten starten Sie den Anruf bei Datenänderung automatisch, aber einfach den Anruf bei Navigation/Datenänderung zu stornieren wäre viel besser.) –
@ SzabolcsPáll ist es nicht möglich, die Browser-Schaltflächen von der Website zu "deaktivieren". Die von Ihnen vorgeschlagene Lösung ist die, die ich in der Frage skizziert habe. – antonpug