Der Standortpfad von AngularJs ändert sich, ohne dass alle Controller zurückgesetzt werden

8

Kurze Version meiner Frage ist: Wie ändere ich die URL ohne Notwendigkeit, Route ändern oder ohne alle Controller auf der aktuell angezeigten Seite laufen zu müssen?

Details:

Ich habe eine Vorlage, die in <ng-view> angezeigt wird und Regionen hat, die von drei Controllern verwaltet werden. Ganz oben auf der Seite habe ich eine interaktive Karte. Wenn Sie auf die Regionen klicken, wird ein Klick gesendet und eine andere Komponente nimmt sie auf und zeigt Daten über diese Region an. Wirklich einfache Einrichtung.

Was ich gerne tun würde, ist, dass meine Nutzer eine tiefe Verknüpfung mit dem Inhalt herstellen können. Also jedes Mal, wenn jemand auf einen Link klickt, möchte ich die URL ändern, die kopiert und in einen anderen Browser eingefügt werden kann. Ein anderer Benutzer könnte einfach auf den Link klicken und den gleichen Zustand sehen, den der erste Benutzer gesehen hat.

Momentan ändere ich den Ort mit einem ähnlichen Code:

%Vor%

Die URL wird dann in meinem Routing aufgenommen und die Karte plus Daten werden korrekt angezeigt. Der Nachteil davon ist, dass jedes Mal, wenn ich auf die Karte und URL-Änderungen klicke, die gesamte Vorlage / Ansicht neu generiert wird. Da das Generieren der Map sehr schwer ist, möchte ich nur eine Änderung am Controller zur Datenpräsentation auslösen.

Ist es möglich? Wie?

Ich könnte eine Kommunikation zwischen den Controllern machen und das Ziel erreichen, aber dann wäre ich nicht in der Lage, Deep Linking zu machen.

PS: Ich möchte nicht $location.search() und reloadOnSearch=false verwenden. Meine Links müssen hübsch sein:)

    
Ralphz 23.01.2013, 16:56
quelle

1 Antwort

9

Klingt so, als ob Sie den Dienst $route nicht verwenden möchten.

Der Dienst $route wurde entwickelt, um die Controller neu zu laden, so dass es keinen Unterschied zwischen dem Navigieren zu einer URL und dem Aktualisieren der URL gibt. Wir tun dies, indem wir jede URL-Änderung vollständig neu laden. Dies ist beabsichtigt.

Klingt wie Ihr Anwendungsfall, sollte $route nicht verwenden, nur $location und < a href="http://docs.angularjs.org/api/ng.directive%3angInclude"> ng-include .

    
Misko Hevery 26.01.2013, 07:54
quelle

Tags und Links