GWT Orte / Aktivitäten - Was sollte für die Navigation verwendet werden?
-
27-10-2019 - |
Frage
Ich habe eine GWT Places / Activities-Webanwendung.Ich verwende das Anchor
-Ereignis von click
, um Benutzer an einen neuen "Ort" zu verschieben, sodass Benutzer keinen "Link" in einem neuen Fenster oder einer neuen Registerkarte öffnen können.Die Frage ist - wie mache ich all diese Links real?
Lösung
Anstatt Anchor
zu verwenden und den ClickEvent
anzuhören, verwenden Sie möglicherweise Hyperlink
, wobei der targetHistoryToken
auf den Ortsnamen gesetzt ist.
z. B.
<g:Hyperlink text="Home" targetHistoryToken="home" />
Andere Tipps
Während die Verwendung eines Hyperlink
s (oder InlineHyperlink
s) funktioniert, würde ich lieber einen ClickHandler
für einen Anchor
verwenden, da sich die URL noch nicht geändert hätte, wenn eine Aktivität einen Wert ungleich Null im mayStop
zurückgegeben hätte (während bei einem Hyperlink
)Dies wäre der Fall, selbst wenn der Benutzer die Navigation abbrechen möchte.
Um das Ziel (href
) auf dem Anchor
festzulegen, verwenden Sie einfach Ihren PlaceHistoryMapper
.Verwenden Sie den HyperlinkImpl
erneut, um Strg + Klick, Mittelklick und Rechtsklick korrekt zu handhaben:
Anchor anchor = new Anchor("text", "#" + placeHistoryMapper.getToken(targetPlace));
anchor.addClickHandler(new ClickHandler() {
private static final HyperlinkImpl IMPL = GWT.create(HyperlinkImpl.class);
@Override
public void onClick(ClickEvent event) {
if (IMPL.handleAsClick(event)) {
placeController.goTo(targetPlace);
event.preventDefault();
}
}
});