无法在控制器上访问ngRepeat的过滤结果

Can't access filtered results of ngRepeat on controller

本文关键字:ngRepeat 过滤 结果 访问 控制器      更新时间:2023-09-26

我有一个ng-repeat网格,它是这样的:

<tr ng-repeat="item in (filteredResults = (userHours| filter:sortDate | filter:sortYear))">

当我应用过滤器时,它们按预期工作,但是我需要跟踪过滤的结果以获得一定的结果总和,因此我添加:

$scope.$watchGroup(['sortYear','sortDate.data'],function(n,o){
    $scope.sumHours = getHoursSum($scope.filteredResults);
    $scope.sumHours = toHHMMSS($scope.sumHours);
});

我一直得到$scope。在应用过滤器之前或之后,filteredResults为"undefined"。我需要做些什么来访问范围内过滤的结果?

我测试了它,问题是由于你初始化值的方式:

ng-repeat是一个指令,你不知道什么时候它会是apply的角度digest周期。这意味着当您的第一个$scope.$watch运行时,ng-repeat还没有被评估。filteredResultsundefined的结果

解决方法非常简单:

  • 在控制器的开头添加变量到你的作用域。

.

$scope.filteredResults = [];

您将集合初始化为一个空数组,这将防止您的函数在ng-repeat分析遇到undefined之前运行

希望有帮助。