O caminho do local do AngularJs é alterado sem que todos os controladores sejam redefinidos

A versão curta da minha pergunta é: Como faço para alterar o URL sem precisar acionar a mudança de rota ou sem precisar executar todos os controladores na página exibida atualmente?

Detalhes:

Eu tenho um modelo que é exibido dentro do<ng-view> que tem regiões regidas por 3 controladores. No topo da página eu tenho um mapa interativo. Quando você clica nas regiões que ele transmite, um clique e outro componente são capturados e exibe dados sobre essa região. Configuração realmente simples.

O que eu gostaria de fazer é permitir que meus usuários façam um link direto para o conteúdo. Então toda vez que alguém clica em um link, eu gostaria de mudar o URL que pode ser copiado e colado em outro navegador. Algum outro usuário poderia apenas clicar no link e ver o mesmo estado que o primeiro viu.

Atualmente mudo a localização com código semelhante a este:

  $scope.$on('mapRegionClick', function($scope, regionCode) {
    var url = generateURL(regionCode);

    $scope.currentScope.$apply(function(){
      $location.path(url);
    });});

A URL é então apanhada no meu roteamento e o mapa mais os dados são exibidos corretamente. A desvantagem disso é que toda vez que eu clico no mapa e o URL muda, todo o template / view é regenerado. Como gerar o mapa é meio pesado, gostaria de acionar apenas uma alteração no controlador de apresentação de dados.

É possível? Como?

Eu poderia fazer alguma comunicação entre os controladores e atingir o meu objetivo, mas então eu não seria capaz de fazer links diretos.

PS: eu não quero usar$location.search() ereloadOnSearch=false. meus links têm que ser bonitos :)

questionAnswers(2)

yourAnswerToTheQuestion