我正在使用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;
}
});
答案 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事件经常被触发(当你为每一行滚动时),所以我不确定这是不是最好的做法。但是,由于您只更新了一个糟糕的计数器,因此它对性能没有太大影响。
还有其他人可能想出更好的主意。请告诉我这是如何最终解决的。