我想重定向到另一个页面&焦点应该放在一些带有id的DIV上,让我们说’some-div-id’.
我试过跟随
我试过跟随
$location.path('/' + $scope.config_path.school + '/' + $routeParams.someUrl + '/#some-div-id')
这工作正常,但它首先将#改为#
喜欢
/%23some-div-id #If '#' is not already present in the URL /%23some-div-id#some-div-id #If '#' is laready present in the URL /#some-div-id
我也试过以下
$location.path('/' + $scope.config_path.school + '/' + $routeParams.someUrl + '/').hash('some-div-id')
它正在创建一个正确的URL但不向下滚动到ID为some-div-id的DIV
EDITED
app.run(function($rootScope,$location,$anchorScroll,$routeParams) { $rootScope.$on('$routeChangeSuccess',function(newRoute,oldRoute) { setTimeout(function() { if ($location.hash()) { $anchorScroll($location.hash()); } }); }); }) app.controller('MainCntrl',function($scope,$routeParams) { });
我也试过$location.path& $location.url
尝试使用$location.url而不是$location.path.
根据文档,$location.path
仅更改路径,而$location.url
更改路径,搜索和哈希.
所以代码就像
$scope.goto = function() { $location.url('pageone#one'); };
pageone是状态的URL,#one是ID
另外,为了在直接访问带有ID的URL时使用它,请使用$anchorScroll.在$stateChangeSuccess事件中,检查weather $location.hash是否存在.如果存在,则调用$anchorScroll.代码看起来像
.run(function($rootScope,$timeout) { $rootScope.$on('$stateChangeSuccess',function(event,toState,toParams,fromState,fromParams) { $timeout(function() { if ($location.hash()) { $anchorScroll(); } }); }); })
示例 – http://plnkr.co/edit/4kJjiMJImNzwLjRriiVR?p=preview(用于查看URL检查http://run.plnkr.co/plunks/4kJjiMJImNzwLjRriiVR/#/pageone中的更改)