rza*_*jac 8 javascript angularjs
我的问题的简短版本是:如何更改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.我的链接必须很漂亮:)
听起来你不想使用$route服务.
该$route服务旨在重新加载控制器,以便导航到URL和刷新URL之间没有区别.我们通过对每个URL更改进行完全重新加载来完成此操作.这是故意的.
听起来像你的用例,不应该使用$route,只是$location和ng-include.
| 归档时间: |
|
| 查看次数: |
4081 次 |
| 最近记录: |