2017-02-09 1 views
0

Ich entwickle eine Anwendung mit Vue2 und Vue-Router (Version^2.2.0) und die Vor- und Zurück-Navigationstasten müssen zeigen, wenn der Benutzer zurückgehen/vorwärts oder nicht.überprüfen Sie, ob es möglich ist, nach vorne zu gehen, wenn mit vue-Router

Um zu überprüfen, ob der Benutzer es gehen kann wieder einfach: Wenn der Benutzer nicht auf dem Home-Bildschirm ist, kann er.

Das Problem kommt, wenn überprüft, ob der Benutzer nach vorne gehen kann, da ich die Router-Geschichte überprüfen müssen, aber ich habe nicht in der Lage, dies zu tun.

Gibt es eine Möglichkeit zu überprüfen, ob der Router „irgendwo zu gehen, wenn router.go Aufruf (1)“ hat?

+0

In der neuesten Version von 'vue-Router v2.2.0' gibt es' onComplete' und 'onAbort' Rückrufe für' Router .Push' Methode, als zweites und drittes Argument: 'router.push (location, onComplete, onAbort)'. Ich bin nicht 100% sicher, dass dies funktioniert, aber Sie könnten mit diesen Rückrufen versuchen. –

+0

Es würde nicht funktionieren, da ich diese Rückrufe in router.go auch brauchen würde. – Potray

Antwort

0

Eine Webanwendung? router.go(n) ist history.go(n), also sind es die gleichen Einschränkungen. Es wäre nicht sicher, die Geschichte einer Person einer Website preiszugeben. Nur weil sie zu Hause sind, bedeutet das nicht, dass sie nicht zurückgehen können und nur weil der Benutzer vorwärts gehen kann, bedeutet das nicht, dass er zu etwas in Ihrer App navigiert. Wenn Sie versuchen, die Vorwärts- und Zurück-Schaltfläche zu replizieren, haben Sie eine schlechte Zeit.

Wenn es nicht ein Web-App ist dann würden Sie brauchen, um manuell die Benutzer Geschichte zu verfolgen und Spleiß und ersetzen und drückt genau wie der Browser tut.

+0

Es ist keine Web-App, es ist eine Hybrid-App für Android, iOS, Windows und OSX. Warum und was genau soll ich "spleißen und ersetzen und schieben"? – Potray

+0

Sie müssten ein Array des Verlaufs wie '[{path: '/ foo', active: true | false}]' behalten. Sie würden darauf drücken, während Sie auf verschiedene Pfade gehen, und den neuen Eintrag als aktiv festlegen. Wenn dann die Zurück- oder Vorwärts-Taste gedrückt wird, müssen Sie "router.replace (nextUrl)" in die richtige Richtung drehen und "active" als "true" setzen. Da es sich jedoch nur um eine App handelt, möchten Sie möglicherweise kein echtes Back/Forward-Browserverhalten haben. Sind Sie sicher, dass Sie nicht mehr wollen, wie eine Art "Back/Forward führt Sie durch den Breadcrumbs/Hierarchie" -Situation. –

+0

Im Moment funktioniert die Zurück-Taste wie vorgesehen: Es ruft nur router.go (-1), wenn der aktuelle Bildschirm nicht der Startbildschirm ist. Ich benutze router.replace nirgends. Die Methode, die Sie vorschlagen, ist es, den Router zu wickeln und nie router.go anrufen, nicht wahr? – Potray

0

Haben Sie die HTML5-Geschichte-Modus-Konfiguration aktiviert? Dokumentation kann here gefunden werden.

Sie müssen es möglicherweise auch in Ihrem Server aktivieren. Wenn Sie Express verwenden, ich diese Zeile in meinem Server-Code haben:

app.use(require('connect-history-api-fallback')()); 
+0

Ich habe den HTML5-Verlaufsmodus aktiviert, aber AFAIK, das es mir nicht erlaubt zu überprüfen, ob es Routen gibt, wenn router.go (1) – Potray

Verwandte Themen