2017-04-24 38 views
0

我有一個帶有外部過濾器和列過濾器的角度ui網格。 我正在使用rowsProcessor,同時應用外部過濾器,同時重置外部過濾器。在ui-grid中應用rowsProcessor之後,列過濾不起作用

我正在使用此命令重置篩選器。

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

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

       }); 
      return renderableRows; 
} 

一旦完成,網格會填充所有數據,但網格中存在的列過濾器不起作用。 任何人都可以解釋爲什麼會發生這種情況。謝謝!

回答

0

簡短回答:有一個「顯示全部」過濾器作爲行處理器過濾器沒有多大意義,因爲它將在每個過濾週期後運行並覆蓋在它之前應用的所有內容。

這裏的問題的一些進一步的說明:

你告訴DisplayAll在中網格,200優先級運行,這意味着之前它應用於所有的過濾器(包括內置列過濾器)正在用row.visible = true;覆蓋。

如果一個列過濾器(它在priotiry 100上運行)確定不應該顯示一行,它將設置row.visible = false;發生之後,當DisplayAll遇到該行時,它將更改row.visible = true;,從而忽略列過濾器。

任何已添加的行處理器過濾器都應通過執行諸如row.visible = row.visible && <new condition>之類的操作來解釋先前應用的過濾器。