Angular UI-Router:有条件地改变状态变化时的锚点位置

时间:2014-06-10 17:21:44

标签: angularjs angular-ui-router

Angular UI Router v0.2.10& Angular 1.2.6

我在这里创建了一个Plunkr:http://plnkr.co/edit/HrGfNcuIv16rKp7GchVJ?p=preview

当用户更改$state时,他们的滚动位置会保留在当前滚动位置的任何位置。有时,我希望用户的滚动位置在状态更改时跳转到页面顶部。例如,如果用户单击页脚中的链接(请参阅Plunkr),则新状态应从页面顶部开始。

有条件地将那些规则应用于状态变化的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

创建应用于容器的滚动到顶部指令。基本上允许传入一个值,当更改时会将指令元素滚动到顶部:

<div class="myContainer" scrollToTop="someScopeVar"></div>

然后查看状态更改,并在指令上设置值以强制滚动到页面顶部。

$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){ 
    $scope.someScopeVar = !$scope.someScopeVar;
});