Изменение местоположения AngularJs без сброса всех контроллеров
Короткая версия моего вопроса: как мне изменить URL без необходимости изменения маршрута или без необходимости запуска всех контроллеров на отображаемой в данный момент странице?
Подробности:
У меня есть шаблон, который отображается внутри<ng-view>
у которого есть области, которыми управляют 3 контроллера. В самом верху страницы у меня есть интерактивная карта. Когда вы нажимаете на регионы, он передает щелчок, и другой компонент подбирает его и отображает данные об этом регионе. Действительно простая настройка.
То, что я хотел бы сделать, это позволить моим пользователям глубокую ссылку на контент. Поэтому каждый раз, когда кто-то нажимает на ссылку, я хочу изменить URL-адрес, который можно скопировать и вставить в другой браузер. Другой пользователь может просто щелкнуть ссылку и увидеть то же состояние, которое видел первый.
В настоящее время я меняю местоположение с помощью кода, похожего на этот:
$scope.$on('mapRegionClick', function($scope, regionCode) {
var url = generateURL(regionCode);
$scope.currentScope.$apply(function(){
$location.path(url);
});});
Затем в моей маршрутизации берется URL, и карта и данные отображаются правильно. Недостатком этого является то, что каждый раз, когда я нажимаю на карту и меняю URL, регенерируется весь шаблон / представление. Поскольку генерация карты довольно сложна, я бы хотел вызвать только изменение контроллера представления данных.
Является ли это возможным? Как?
Я мог бы установить связь между контроллерами и достичь своей цели, но тогда я не смог бы делать глубокие связи.
PS: я не хочу использовать$location.search()
а такжеreloadOnSearch=false
, мои ссылки должны быть красивыми :)