使用Ajax加载数据滚动AngularJS ngRepeat

时间:2015-05-24 20:02:18

标签: angularjs scroll angularjs-ng-repeat

首先是一个插件:http://embed.plnkr.co/C866y3LHCE7QfBGuFQPQ/preview

所以我在这里通过Ajax获取一组帖子并使用ngRepeat显示它们。然后(当帖子完成渲染时)我想将页面滚动到特定的帖子(让我们说帖子№18)。看起来很简单,但我无法让它发挥作用。

问题似乎是,在从Ajax接收数据后,angular无法找到该帖子,因此position()scrollTop()函数无法正常工作。

2 个答案:

答案 0 :(得分:1)

您必须等到使用新模型更新视图后,使用$timeout等待0毫秒在DOM准备好后立即滚动

plunkr

  $scope.getPosts = function() {
    $http.get(data_url).success(function(data){
      $scope.posts = data;
      $timeout(function() {
        var post = $('#pid_18');
        console.log('pid_18', post);
        $('body').scrollTop(post[0].offsetTop);
      }, 0);
    });

答案 1 :(得分:1)

我认为问题在于渲染没有完成,如果你有2个元素它可以工作但不能用1000.

所以最好的方法是知道渲染完成的时间,相关帖子:

Calling a function when ng-repeat has finished