$ scope.gridApi.core.getVisibleRows无法使用列清除过滤器正确更新

时间:2017-07-11 19:29:57

标签: angularjs ui-grid

如何获取实际位于"显示项目"?中的行 $ scope.gridApi.core.getVisibleRows似乎给出了不一致的值。

http://plnkr.co/edit/FRaCNxKhZ242rFyqNDkm?p=preview

gridApi.core.on.filterChanged($scope, function () {
    $timeout(function () {
        var allvisiblerows = $scope.gridApi.core.getVisibleRows($scope.gridApi.grid);
        $scope.visibleRowsCount = allvisiblerows.length;
    }, 0);
});

enter image description here

1 个答案:

答案 0 :(得分:1)

filterChanged的问题是,一旦过滤器发生变化就会引发问题,但此时数据未必被过滤。要解决此问题,您可以收听filterChanged事件,而不是收听rowsRendered,这样可以解决问题。

gridApi.core.on.rowsRendered($scope, function () {
    var allvisiblerows = $scope.gridApi.core.getVisibleRows($scope.gridApi.grid);
    $scope.visibleRowsCount = allvisiblerows.length;
});

这样你也可以摆脱$timeout.