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

时间:2015-09-04 15:04:03

标签: javascript angularjs angularjs-ng-repeat angular-filters

我有一个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”。 如何在范围内访问过滤结果?

1 个答案:

答案 0 :(得分:1)

我对它进行了测试,问题在于您初始化值:

ng-repeat是一个指令,您不知道角度apply周期何时为digest。这意味着当您第一次$scope.$watch运行时,ng-repeat尚未评估。 filteredResultsundefined的结果。

解决方法非常简单:

  • 将var添加到控制器开头的范围内。

$scope.filteredResults = [];

您将该集合初始化为空数组,这将阻止您的函数在ng-repeat分析遇到undefined

之前运行

希望它有所帮助。