Angularjs UI网格列过滤工作非常慢
我使用了UI网格的内置单元过滤器,但即使我只有20条记录,过滤数据也要花很多时间。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
我刚刚启用了过滤为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();
}
});