如何在一个页面上覆盖autoscroll = true?

时间:2014-08-08 18:14:22

标签: javascript angularjs

我正在创建一个SPA,当从一条路线到另一条路线时,需要链接滚动到顶部。

但是,我想在一个视图上禁用它,因为我们使用的是使用选择来更新网址中的路径以使搜索结果可共享的搜索。

Ex: $location.path($location.path()).search('state', $scope.myState);

如果我不这样做,页面不会随结果一起更新。

将ng-view设置为autoscroll = true,一旦使用了select,它就会更新整个页面。

$anchorScrollProvider.disableAutoScrolling(); 对于一个视图/模块,根本不禁用它。

angular.module('projects').value('$anchorScroll', angular.noop); 禁用它,但它在站点范围内。因此,如果我从项目转到FAQ,它就不会出现在顶部。

我可能对位置路径做错了,它与autoscroll无关,因为它似乎正在记录中。

谢谢, AngularN00b

更新: 似乎它可以工作,但我根本无法使它工作:

在index.html中

<div ng-view class="content-wrapper" ng-class="{'secondary': !is_path('/')}" autoscroll="enableAutoScroll"></div>

在Project controller中:

$scope.selectSubject = function() { $scope.enableAutoScroll = false; $location.path($location.path()).search('subject', $scope.mySubject); };

我可以看到日志及其在项目页面上将值更新为false。

1 个答案:

答案 0 :(得分:1)

ngViewautoscroll属性接受角度表达式,因此您可以将其与$scope绑定:

<div ng-view autoscroll="enableAutoScroll">

在调用$location.path()之前,您可以启用/禁用自动滚动,如下所示:

$scope.enableAutoScroll = false;

希望这有帮助。