javascript – 如何从分页的ui-grid获取过滤数据

前端之家收集整理的这篇文章主要介绍了javascript – 如何从分页的ui-grid获取过滤数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在启用分页功能时从ui网格中获取过滤数据.一般情况下我用过
$scope.gridApi.core.on.filterChanged($scope,function () {

                if ($scope.gridApi.grid.columns[1].filter.term != "" && $scope.gridApi.grid.columns[1].filter.term != undefined) {
                    var dd =$scope.gridApi.core.getVisibleRows($scope.gridApi.grid);
                    console.log(dd);
            });

但是当启用分页时,代码不能很好地工作,它只返回第一页的行.但我需要所有过滤后的数据.

最简单的解决方案是基于过滤器术语过滤数据源,但它会显着降低性能.

任何建议?

解决方法

注意:我没有尝试分页,只是分组,但希望它能给你一个提示.

尝试将rowsVisibleChanged事件与filterChanged事件一起使用.您必须使用两者,因为如果您单独使用filterChanged事件,它将无法工作,因为它是在实际过滤行之前启动的.我使用标志变量(filterChanged)来了解过滤器是否被修改.

然后,使用类似于lodash内容来过滤将visible属性设置为true的$scope.gridApi.grid.rows:

// UI-Grid v.3.0.7
var filterChanged = false;

$scope.gridApi.core.on.filterChanged($scope,function() {
    filterChanged = true;
});

$scope.gridApi.core.on.rowsVisibleChanged($scope,function() {
    if(!filterChanged){
        return;
    }
    filterChanged = false;
    // The following line extracts the filtered rows
    var filtered = _.filter($scope.gridApi.grid.rows,function(o) { return o.visible; });
    var entities = _.map(filtered,'entity'); // Entities extracted from the GridRow array
});

猜你在找的JavaScript相关文章