我的问题的简短版本是:如何更改URL而无需触发路由更改或无需在当前显示的页面上运行所有控制器?
细节:
我有一个显示在其内部的模板,该模板<ng-view>
由3个控制器控制.在页面的最顶部,我有一个交互式地图.单击区域时,它会广播一个单击,其他组件会在其上进行选择并显示有关此区域的数据.设置非常简单.
我想做的是让我的用户深入链接到内容.因此,每当有人点击链接时,我都想更改可以复制并粘贴到其他浏览器的URL.其他一些用户只需点击链接即可看到第一个看到的状态.
目前我使用与此类似的代码更改位置:
$scope.$on('mapRegionClick', function($scope, regionCode) {
var url = generateURL(regionCode);
$scope.currentScope.$apply(function(){
$location.path(url);
});});
Run Code Online (Sandbox Code Playgroud)
然后在我的路由中拾取URL,并正确显示地图和数据.这样做的缺点是每次我点击地图和URL更改时,都会重新生成整个模板/视图.因为生成地图有点沉重,我只想触发对数据显示控制器的更改.
可能吗?怎么样?
我可以在控制器之间进行一些通信,实现我的目标,但后来我无法进行深层链接.
PS:我不想用$location.search()
和reloadOnSearch=false
.我的链接必须很漂亮:)