AngularJS UI路由器 – 更改url没有重新加载状态
发布时间:2020-12-17 09:11:48 所属栏目:安全 来源:网络整理
导读:目前我们的项目使用默认$ routeProvider,我使用这个“hack”,更改url而不重新加载页面: services.service('$locationEx',['$location','$route','$rootScope',function($location,$route,$rootScope) { $location.skipReload = function () { var lastRou
目前我们的项目使用默认$ routeProvider,我使用这个“hack”,更改url而不重新加载页面:
services.service('$locationEx',['$location','$route','$rootScope',function($location,$route,$rootScope) { $location.skipReload = function () { var lastRoute = $route.current; var un = $rootScope.$on('$locationChangeSuccess',function () { $route.current = lastRoute; un(); }); return $location; }; return $location; }]); 和控制器 $locationEx.skipReload().path("/category/" + $scope.model.id).replace(); 我正在考虑用ui-router替换routeProvider用于嵌套路由,但是在ui-router中找不到。 是可能的 – 对angular-ui路由器做同样吗? 为什么我需要这个?
简单地说,你可以使用$ state.transitionTo而不是$ state.go。 $ state.go在内部调用$ state.transitionTo,但自动将选项设置为{location:true,inherit:true,relative:$ state。$ current,notify:true}。您可以调用$ state.transitionTo并设置位置:false。例如:
$state.go('.detail',{id: newId}) 可以替换 $state.transitionTo('.detail',{id: newId},{ location: true,inherit: true,relative: $state.$current,notify: false }) 编辑:如fracz建议,它可以简单地是: $state.go('.detail',{notify: false}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容