Krótka wersja mojego pytania brzmi: Jak zmienić adres URL bez konieczności wyzwalania zmiany trasy lub bez konieczności uruchamiania wszystkich kontrolerów na aktualnie wyświetlanej stronie?Zmiana ścieżki lokalizacji AngularJs bez resetowania wszystkich kontrolerów
Szczegóły:
Mam szablon, który jest wyświetlany wewnątrz <ng-view>
że ma obszary regulowane przez 3 kontrolerów. Na samej górze strony mam interaktywną mapę. Po kliknięciu regionów, które emitują kliknięcie, inny komponent odbiera i wyświetla dane o tym regionie. Naprawdę prosta konfiguracja.
Chciałbym umożliwić moim użytkownikom precyzyjne połączenie z treścią. Za każdym razem, gdy ktoś kliknie link, chciałbym zmienić URL, który można skopiować i wkleić do innej przeglądarki. Jakiś inny użytkownik mógł po prostu kliknąć łącze i zobaczyć ten sam stan, który zobaczył pierwszy.
Obecnie zmienić lokalizację z kodu podobnego do tego:
$scope.$on('mapRegionClick', function($scope, regionCode) {
var url = generateURL(regionCode);
$scope.currentScope.$apply(function(){
$location.path(url);
});});
URL jest następnie odebrać w moim routingu i map oraz danych wyświetlany prawidłowo. Minusem tego jest to, że za każdym razem, gdy klikam na mapę i zmiany adresu URL, cały szablon/widok jest regenerowany. Ponieważ generowanie mapy jest dość ciężkie, chciałbym wywołać tylko zmianę kontrolera przedstawiającego dane.
Czy to możliwe? W jaki sposób?
Mogę wykonać jakąś komunikację między kontrolerami i osiągnąć mój cel, ale wtedy nie będę w stanie wykonać dokładnego połączenia.
PS: Nie chcę używać $location.search()
i reloadOnSearch=false
. moje linki muszą być ładne :)
czy próbowałeś wstawić mapę poza 'ng-view' i połączyć jej kontroler do tego, który jest dołączony do trasy przy użyciu usługi wspólnej? – akonsu
Chodzi o to, że potrzebuję, aby mapa znajdowała się wewnątrz 'ng-view' dla tego konkretnego szablonu, ponieważ inne części strony używają innych szablonów, w których mapa nie jest ich częścią. – Ralphz
To wielka szkoda, że kątowe nie zapewnia czystego, gotowego do wykonania sposobu. Uwielbiam kanciasty, ale z tego powodu wolałem Embera w jednym z moich projektów. –