Angularjs ng grid在筛选后获得筛选列计数
我正在使用ng网格进行过滤。每当过滤器更新时,我都希望获得过滤的项目计数。我已经能够使用ngGrid的filteredRows属性完成这项工作。但是,我在过滤之前获取行,并且在过滤之后获取行。下面是一个plunker来演示该行为: 以下是发生过滤的代码:Angularjs ng grid在筛选后获得筛选列计数,angularjs,ng-grid,Angularjs,Ng Grid,我正在使用ng网格进行过滤。每当过滤器更新时,我都希望获得过滤的项目计数。我已经能够使用ngGrid的filteredRows属性完成这项工作。但是,我在过滤之前获取行,并且在过滤之后获取行。下面是一个plunker来演示该行为: 以下是发生过滤的代码: $scope.$watch('gridOptions.filterOptions.filterText2', function(searchText, oldsearchText) { if (searchText !== olds
$scope.$watch('gridOptions.filterOptions.filterText2', function(searchText, oldsearchText) {
if (searchText !== oldsearchText) {
$scope.gridOptions.filterOptions.filterText = "name:" + searchText + "; ";
$scope.recordCount = $scope.gridOptions.ngGrid.filteredRows.length;
}
});
在查看了源代码并进行了一些调试之后,我认为网格的实际过滤是在您的观察者触发之后进行的。监听
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;
});
这似乎在这种情况下起作用
从我最近对gridevents的实验中,我了解到row事件非常频繁(例如,当您滚动每一行时),因此我不确定这是否是最佳实践。但是,由于您只更新了一个糟糕的计数器,所以它对性能没有太大影响
还有其他人可能会想出更好的主意。请告诉我这是如何最终解决的