获取请求AngularJs后滚动到页面底部

时间:2014-02-04 19:23:31

标签: javascript angularjs

我熟悉使用类似的东西:

$scope.gotoBottom = function(){
    $location.hash('bottom');
    $anchorScroll();
}

这是有效的..但是当我检索在ng-repeat中使用的数据并尝试在数据进入时调整大小时,我所看到的是一个问题。

示例(在控制器中):

users.get({userList:$routeParams.conversationId}, function(data){
        $scope.userList = data;
        $scope.gotoBottom();
})

gotoBottom方法正在快速启动,而ng-repeat正在查看$ scope.userList并根据它来建立它的表。

我希望能够在重新制作该列表后(或修改它时)切换gotoBottom。有没有更好的方法来实现这一目标?

谢谢!

2 个答案:

答案 0 :(得分:3)

当AngularJs变量发生变化时,您可以使用$watch listener来触发gotoBotton。

$scope.ActivityList = new Array();

$scope.$watch("ActivityList", function () {
    $scope.$evalAsync(function () {
        $scope.DoSomething();
    });
}, true);

$scope.DoSomething = function () {
    $(function () {
        //$scope.gotoBottom();
    });
};

答案 1 :(得分:1)

此外,您可以在页面加载后运行滚动

angular.element($window).bind('load', 
  function() {
  var element = document.getElementById("messages-list").lastElementChild;
    element.id = "bottom";
    /*-------------*/
    $location.hash('bottom');
    $anchorScroll();      
}