如何查看过滤的ng-repeat中的元素数量?

时间:2013-11-26 13:27:48

标签: angularjs

我有以下ng-repeat?

<table>
<tr data-ng-repeat="row in grid.data | filter:isProblemInRange>
<td>xxx</td>
</tr>
</table>

使用isProblemInRange函数过滤行,该函数基于两个输入字段的值。根据我在这些字段中放置的内容,显示的行数可能会发生变化。

我是否可以监视屏幕上显示的行数,如果可以,我该如何从控制器内部执行此操作?

3 个答案:

答案 0 :(得分:2)

在这里查看解决方案:https://stackoverflow.com/a/19956685/340128

定义的变量results附加到范围,也可以从控制器访问。

答案 1 :(得分:0)

您可以使用控制器中的$filter service

var $scope.filteredRows = $filter('filter')($scope.gridData, $scope.isProblemInRange);

并在过滤的行上运行ng-repeat。这样就可以避免在模板中引入新的范围字段,这会使代码难以测试和维护。

有关示例,请参阅this plunk

答案 2 :(得分:0)

var $scope.filteredRows = $filter('filter')($scope.gridData, $scope.isProblemInRange);

$scope.$watch('filteredRows',function(newVal,oldVal){
    if(!angular.equals(newVal.length,oldVal.length)){
        [... Do stuff here when the number of filtered rows changes ...]
    }
});

$scope.$watch('gridData',function(newVal,oldVal){
    if(!angular.equals(newVal,oldVal)){
        $scope.filteredRows = $filter('filter')($scope.gridData, $scope.isProblemInRange);
    }
});