我通过AngularJS的locationhash()+ $ anchorScroll将选定的页面元素通过Ajax加载到窗口顶部之后。

JS:
   在控制器中:

     $scope.scrollTo = function (location) {
            //Scroll to category head
            $scope.categoryHead = "grouptitle-" + location;
            $location.hash($scope.categoryHead);
            $anchorScroll($scope.categoryHead);
     };


在指令中:

 .directive('onFinishRender', function ($timeout) {
        return {
            restrict: 'A',
            link: function (scope, element, attr) {
                var scroll;
                if (scope.$last === true) {
                    $timeout(function () {
                        //Scroll category to top of page after list has completed render
                        scroll = scope.scrollTo(scope.category);
                    });
                }
            }
        };


这给了我一个显示URL mysite.com/##grouptitle-2或类似名称,看起来有点不可思议。有什么方法可以配置此锚,使其仅显示一个哈希值,或者根本不修改地址栏URL?

最佳答案

$anchorScroll上删除该参数。 anchorScroll将自动从$location.hash(<hash>)获取哈希。

因此您的函数应如下所示:

$scope.categoryHead = "grouptitle-" + location;
$location.hash($scope.categoryHead);
$anchorScroll();


如果DOM是动态更新的,则将$location.hash$anchorScroll包装在$timeout函数中。

关于javascript - AngularJS $ anchorScroll将##-anchorname添加到页面URL。如何避免这种情况?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19999556/

10-09 08:54