Cambio de ruta de ubicación de AngularJs sin reiniciar todos los controladores
La versión corta de mi pregunta es: ¿Cómo cambio la URL sin necesidad de activar el cambio de ruta o sin necesidad de ejecutar todos los controladores en la página que se muestra actualmente?
Detalles:
Tengo una plantilla que se muestra dentro de la<ng-view>
Que tiene regiones gobernadas por 3 controladores. En la parte superior de la página tengo un mapa interactivo. Cuando hace clic en las regiones, este difunde un clic y otro componente lo recoge y muestra datos sobre esta región. Configuración realmente sencilla.
Lo que me gustaría hacer es permitir a mis usuarios un enlace profundo al contenido. Entonces, cada vez que alguien haga clic en un enlace, me gustaría cambiar la URL que se puede copiar y pegar en otro navegador. Otro usuario podría simplemente hacer clic en el enlace y ver el mismo estado que vio el primero.
Actualmente cambio la ubicación con código similar a este:
$scope.$on('mapRegionClick', function($scope, regionCode) {
var url = generateURL(regionCode);
$scope.currentScope.$apply(function(){
$location.path(url);
});});
La URL se recoge en mi ruta y el mapa y los datos se muestran correctamente. La desventaja de esto es que cada vez que hago clic en el mapa y en los cambios de URL, la plantilla / vista completa se regenera. Debido a que generar el mapa es algo pesado, me gustaría activar solo un cambio en el controlador de presentación de datos.
¿Es posible? ¿Cómo?
Podría hacer alguna comunicación entre los controladores y lograr mi objetivo, pero entonces no podría hacer una vinculación profunda.
PD: no quiero usar$location.search()
yreloadOnSearch=false
. mis enlaces tienen que ser bonitos :)