GWT - Wo soll ich Codespalten verwenden, während ich Orte/Aktivitäten/Mapper benutze?

StackOverflow https://stackoverflow.com/questions/5328599

  •  26-10-2019
  •  | 
  •  

Frage

"Core" bezieht sich auf das anfängliche Teil der geladenen Anwendung.

  • Um URL an Orte zu binden, verwendet GWT PlaceTokenizer<P extends Place>. Wenn Sie die Anwendung aus der URL laden, ruft sie die Methode auf P getPlace(String token) Um eine neue Instanz des Anrufens abzurufen.

    Aufgrund der asynchronen Natur der Codespaltung kann ich den Ort in a nicht erstellen runAsync In dieser Methode. Also muss ich setzen alle Die Orte meiner App im Kern.

  • Um Orte mit Aktivitäten zu verknüpfen, ruft GWT aufActivity getActivity(Place place) (aus com.google.gwt.activity.shared.ActivityMapper) um eine neue Instanz der Aktivität abzurufen.

    Ich muss noch einmal sagen alle Meine Aktivitäten im Kern.

Folgendes möchte ich versuchen: Schreiben Sie einen Brauch com.google.gwt.place.shared.Delegate das

  • Binden Sie sich an PlaceChangeRequestEvent. Wenn das Apppiece, das dem angeforderten Ort entspricht event.setWarning(NEED_TO_LOAD_MODULE)
  • in dem confirm(String message) Methode, stets Rückgabe falsch, wenn die Nachricht entspricht NEED_TO_LOAD_MODULE (so stört es den Benutzer nicht) und lädt das Modul über RunAsync.
  • Sobald das Modul geladen ist, rufen Sie an goTo(requestedPlace)

Jedes Apppiece meiner Anwendung enthält eine Reihe von Aktivitäten und die entsprechenden Ansichten. Da werden die Mapper nur dann aufgerufen, wenn PlaceChangeEventist entlassen, ich könnte eine neue Instanz meiner Aktivität überstellen AppPiece.getSomeActivityInstance().

Ich bin mir ziemlich sicher, dass dies funktionieren wird, aber was mich stört, ist das

  • Wenn ich je nach dem angeforderten Ort das Laden findet, zwingt ich mich, Code zu schreiben, der meinen Mappers sehr ähnlich ist
  • Ich möchte meine Plätze im entsprechenden Apppiece haben
  • Überschreiben Delegate Zu diesem Zweck ist schwierig und ich suche eine bessere Lösung
War es hilfreich?

Lösung

Sie müssen nicht alle Ihre Aktivitäten einsetzen der Kern (wie Sie es nennen): Während eine Aktivitätsinstanz synchron abgerufen wird, darf sie dazu dienen Anfang asynchron. Hier würden Sie Ihre platzieren GWT.runAsync Anruf.

Sehen http://code.google.com/p/google-web-toolkit/issues/detail?id=5129 und https://groups.google.com/d/topic/google-web-toolkit/8_p_d4at-0e/discussion

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top