我通过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/