在ui-grid中应用rowsProcessor后,列过滤无法正常工作

时间:2017-04-24 10:41:27

标签: angular-ui-grid ui-grid

我有一个角度ui网格,有外部过滤器和列过滤器。 我在应用外部过滤器时以及在重置外部过滤器时使用rowsProcessor。

我使用此命令重置过滤器。

$scope.gridApi.grid.registerRowsProcessor( $scope.DisplayAll, 200 );

$scope.DisplayAll = function( renderableRows ){
renderableRows.forEach( function( row ) {
              row.visible = true;

                });
            return renderableRows;
}

完成此操作后,网格将填充所有数据,但网格中的列过滤器不起作用。 任何人都可以解释为什么会这样。谢谢!

1 个答案:

答案 0 :(得分:0)

简短回答:"全部显示"过滤器作为rowsProcessor过滤器没有多大意义,因为它将在每个过滤周期后运行并覆盖在它之前应用的所有内容。

以下是对问题的进一步描述:

您已告知DisplayAll在网格中以优先级200运行,这意味着之前应用的所有过滤器(包括内置列过滤器)都将被row.visible = true;覆盖。

如果列过滤器(在priotiry 100上运行)确定不应显示行,则会设置row.visible = false;发生后,当DisplayAll遇到该行时,它会更改row.visible = true;,从而忽略列过滤器。

添加的任何rowsProcessor过滤器都应通过执行row.visible = row.visible && <new condition>之类的操作来考虑先前应用的过滤器。