2

使用 ng-grid 我想在添加到列表底部时通过滚动到它来显示新添加的行。

请看plunk:http ://plnkr.co/edit/4jgy9wwr2HRhfhgKMKcX?p=preview

var grid = $scope.gridOptions.ngGrid;
grid.$viewport.scrollTop((($scope.myData.length - 1)* grid.config.rowHeight));

我不明白为什么网格不会一直向下滚动。我尝试添加 rowHeight 减去它,但每次网格都不会滚动到最后一行。

我知道通过将记录添加到列表顶部将通过对网格进行排序来解决问题,并且就其性质而言,空记录将被推到底部。

4

2 回答 2

9

您不需要“ngGridEventData”,如果您记录它,您会注意到他为网格上的每个现有行被解雇,这不是最佳的。

正如已经回答的那样,您可以使用延迟为 0 的 $timeout 服务。这听起来有点棘手,它可能不是最佳实践,但它确实有效。

将其加载到您的控制器中:

app.controller('MyCtrl', function($scope, $timeout) {
    //load
}

然后在您的 addNew() 中:

$scope.addNew = function () {

    $scope.myData.push({ name: "new", age: 100 });

    $timeout(function () {
        var grid = $scope.gridOptions.ngGrid;
        $scope.gridOptions.selectItem($scope.myData.length - 1, true);
        grid.$viewport.scrollTop((($scope.myData.length - 1) * grid.config.rowHeight));
    }, 0);

};

在此处检查结果:http: //plnkr.co/edit/4HNqFh7uu9IWCjDVt5WR ?p=preview

于 2013-11-11T00:42:45.947 回答
2

实际上 Bug 位于 ng-grid js 文件中以计算正确的滚动偏移量。请点击链接 http://pushkarkinikar.wordpress.com/2014/07/03/ng-grid-scrolling-issue/

我已经详细解释过

于 2014-07-04T07:22:13.207 回答