angularjs – $location.path将哈希更改为#&.hash不能正常工作

前端之家收集整理的这篇文章主要介绍了angularjs – $location.path将哈希更改为#&.hash不能正常工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想重定向到另一个页面&焦点应该放在一些带有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中的更改)

猜你在找的Angularjs相关文章