我已经在这里尝试解决方案:https://www.consolelog.io/angularjs-change-path-without-reloading/
app.run(['$route', '$rootScope', '$location', function ($route, $rootScope, $location) {
var original = $location.path;
$location.path = function (path, reload) {
if (reload === false) {
var lastRoute = $route.current;
var un = $rootScope.$on('$locationChangeSuccess', function () {
$route.current = lastRoute;
un();
});
}
return original.apply($location, [path]);
};
}])
但是我将其设置为的路径被消耗掉并恢复为原来的样子。
ngRoute路由器的默认行为是,当路径更改并且新的URL映射到当前路由时,将重新加载该路由。
如果reloadOnSearch
选项设置为false
,则ngRoute将仅在$location.search()
或$location.hash()
更改时不重新加载路由:
app.config(function($routeProvider) { $routeProvider.when("/foo", { templateUrl: 'foo.html', controller: 'fooController', reloadOnSearch: false }); })
应用程序将调用:
$location.hash({pageNumber: n});
$routeUpdate
事件在根作用域上广播(无需重新加载路由)。