2016-07-30 6 views
1

Wenn ich auf einer Seite in meiner Ember App bin, und bearbeiten Sie die URL manuell oder verwenden Sie ein Lesezeichen, das eine andere Route innerhalb der gleichen App identifiziert, wird die Seite standardmäßig neu geladen, Ich verlor jeden vorübergehenden Zustand, den ich hatte, und nicht einfach so, als hätte ich einen von der Ember gesteuerten Link in der App durchlaufen. Gibt es eine eingebaute Funktion von Ember, die gut in die Routing-Funktionen integriert ist, die das verhindern kann und stattdessen einfach umgeht?Route ohne Seite neu laden auf Lesezeichen oder manuelle URL bearbeiten

Details:

Mit Routing Embers standardmäßig die URL selbst ändert sich nicht nur das Fragment Identifier ("Hash"). ZB in dem Quick Start Beispiel, wenn Sie auf http://server/scientists sind und die Liste der Programmierer stattdessen ansehen möchten, gehen Sie zu http://server/programmers.

Wenn Sie das tun, indem Sie auf einen von Ember bearbeiteten Link klicken, funktioniert das innerhalb der geladenen Seite ganz gut (ich nehme an, dass Ember die History-API unter den Deckblättern verwendet, um den Status ohne Seitenladen zu ersetzen). Kein Neuladen der Seite wird verursacht.

Wenn Sie jedoch auf http://server/scientists sind und auf ein Lesezeichen klicken, um zu http://server/programmers zu gelangen (oder die URL manuell zu bearbeiten), wird die Seite neu geladen, wodurch die temporäre Seite verloren geht.

In einer App, die Fragment-IDs für das Routing (wie Gmail) verwendet, führt die äquivalente Änderung von (etwa) zu http://server/#programmers nicht dazu, Seite neu laden, auch wenn Sie die Adressleiste manuell bearbeiten oder ein Lesezeichen verwenden. (Natürlich, es ist nur eine Änderung an der Fragment-ID, nicht die tatsächliche URL.)

Gibt es eine integrierte Handhabung in Ember, die gut in seine Routing-Funktionen integriert ist, die es ohne Neuladen diesen Anwendungsfall behandeln kann? Entweder mit einer Fragment-ID, anstatt die URL zu ändern, oder mit einer History-API-Funktion? (Obwohl ich nicht an eine History-API-Funktion denken kann, die das kann.)

Antwort

1

In der Datei config/environment.js, ENV.locationType= 'hash'; standardmäßig enthalten würde es auf auto festgelegt werden. Für weitere Informationen - http://emberjs.com/api/classes/Ember.Location.html

+0

Wird nicht mehr integriert mit dem integrierten Routing als das! Perfekt danke. –

Verwandte Themen