我面临着类似的问题。我必须跨多个视图维护查询字符串。而且,我还必须在维护查询字符串的同时检查 $$hash。就我而言,我应该只在投资组合视图中移动 $$hash 值。我希望这有帮助。
var onRouteChangeOff = $scope.$on('$locationChangeStart', routeChange);
function routeChange(event, newUrl, oldUrl) {
onRouteChangeOff();
if (oldUrl.indexOf('?') >= 0) {
var queryString = oldUrl.split('?')[1];
queryString = queryString.split('#')[0];
newUrl = $location.$$path + '?' + queryString;
if($location.$$path === '/portfolio')
{
newUrl += '#' + $location.$$hash
}
$location.url(newUrl);
}
event.preventDefault();
return;
}
如果您只想在没有任何 $$hash 值的视图中维护查询字符串,那么下面的代码就可以了。
var onRouteChangeOff = $scope.$on('$locationChangeStart', routeChange);
function routeChange(event, newUrl, oldUrl) {
onRouteChangeOff();
if (oldUrl.indexOf('?') >= 0) {
var queryString = oldUrl.split('?')[1];
newUrl = $location.$$path + '?' + queryString;
$location.url(newUrl);
}
event.preventDefault();
return;
}