ng-grid在过滤后获得过滤的列数

时间:2014-06-03 15:23:47

标签: angularjs ng-grid

我正在使用ng-grid进行过滤。任何时候过滤器更新我想要获得过滤项目计数。我已经能够使用ngGrid的filteredRows属性执行此操作。但是我在过滤发生之前得到了行,并且在过滤发生之后我想要它们。这是一个演示行为的傻瓜:http://plnkr.co/edit/onyE9e?p=preview

以下是发生过滤的代码:

$scope.$watch('gridOptions.filterOptions.filterText2', function(searchText, oldsearchText) {
      if (searchText !== oldsearchText) {
        $scope.gridOptions.filterOptions.filterText = "name:" + searchText + "; ";
        $scope.recordCount = $scope.gridOptions.ngGrid.filteredRows.length;
    }
});

1 个答案:

答案 0 :(得分:2)

在查看源代码并进行一些调试之后,我认为在观察者触发后,网格的实际过滤发生了。同样适用于监听ngGridEventFilter,它也会在过滤行之前触发。

我想出的解决方案是听ngGridEventRows

    $scope.$watch('gridOptions.filterOptions.filterText2', function(searchText, oldsearchText) {
    if (searchText !== oldsearchText) {
      $scope.gridOptions.filterOptions.filterText = "name:" + searchText + "; ";
    }
    });
    $scope.$on('ngGridEventRows', function() {
    $scope.recordCount = $scope.gridOptions.ngGrid.filteredRows.length;
    });

这似乎适用于此Plunker

从我最近的gridevents实验中我了解到,row事件经常被触发(当你为每一行滚动时),所以我不确定这是不是最好的做法。但是,由于您只更新了一个糟糕的计数器,因此它对性能没有太大影响。

还有其他人可能想出更好的主意。请告诉我这是如何最终解决的。