我有以下ng-repeat?
<table>
<tr data-ng-repeat="row in grid.data | filter:isProblemInRange>
<td>xxx</td>
</tr>
</table>
使用isProblemInRange函数过滤行,该函数基于两个输入字段的值。根据我在这些字段中放置的内容,显示的行数可能会发生变化。
我是否可以监视屏幕上显示的行数,如果可以,我该如何从控制器内部执行此操作?
答案 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);
}
});