Angularjs UI网格列过滤工作非常慢

Angularjs UI网格列过滤工作非常慢,angularjs,angular-ui-grid,Angularjs,Angular Ui Grid,我使用了UI网格的内置单元过滤器,但即使我只有20条记录,过滤数据也要花很多时间。 我刚刚启用了过滤为true。 请帮帮我实际上我找到了这背后的原因。。我使用虚拟化阈值=行数一次渲染所有行,这不允许使用默认的ui网格渲染算法 这里有一个潜在的解决方法 1。在ui-grid.js中,删除为标题中的每个列过滤器设置的手表。看看这是否能消除惰性。它还将使网格不响应过滤器更改。继续执行步骤2-4,使过滤器再次工作 //$scope.col.filters.forEach(function (filte

我使用了UI网格的内置单元过滤器,但即使我只有20条记录,过滤数据也要花很多时间。

我刚刚启用了过滤为true。
请帮帮我实际上我找到了这背后的原因。。我使用虚拟化阈值=行数一次渲染所有行,这不允许使用默认的ui网格渲染算法

这里有一个潜在的解决方法

1。在ui-grid.js中,删除为标题中的每个列过滤器设置的手表。看看这是否能消除惰性。它还将使网格不响应过滤器更改。继续执行步骤2-4,使过滤器再次工作

//$scope.col.filters.forEach(function (filter, i) {
//filterDeregisters.push($scope.$watch('col.filters[' + i + '].term', function(n, o) {
    //  if (n !== o) {
    //    uiGridCtrl.grid.api.core.raise.filterChanged();
    //    uiGridCtrl.grid.api.core.notifyDataChange( uiGridConstants.dataChange.COLUMN );
    //    uiGridCtrl.grid.queueGridRefresh();
    //  }
    //}));
 //});
2。在代码中,创建一个函数,该函数遍历每列的过滤项,并创建一个包含所有过滤项的字符串

function getConcatenatedFilter() {
        var concatenatedFilter = "";
        var api = this.getGridApi();
        if (api) {
            for (var i = 0; i < api.grid.columns.length; i++) {
                concatenatedFilter += i + ":";
                var column = api.grid.columns[i];
                var term = column.filters[0].term || "";
                if (term) {
                    concatenatedFilter += term;
                }
            }
        }
        return concatenatedFilter;
    }
4。最后,为
过滤器检查设置一个最后的监视,当它触发时将刷新网格

$scope.$watch('filtersCheck', (newVal, oldVal) => {
    if (newVal && oldVal && newVal !== oldVal) {
        gridApi.grid.queueGridRefresh();
    }
});

不看你的代码很难确定。嗨@James Lawruk,我有这个问题,但一旦
ui网格调整列大小
被删除,它就会工作得更快。知道为什么调整列大小会减慢过滤速度吗?
$scope.$watch('filtersCheck', (newVal, oldVal) => {
    if (newVal && oldVal && newVal !== oldVal) {
        gridApi.grid.queueGridRefresh();
    }
});