我有一个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”。 如何在范围内访问过滤结果?
答案 0 :(得分:1)
我对它进行了测试,问题在于您初始化值:
ng-repeat
是一个指令,您不知道角度apply
周期何时为digest
。这意味着当您第一次$scope.$watch
运行时,ng-repeat
尚未评估。 filteredResults
为undefined
的结果。
解决方法非常简单:
$scope.filteredResults = [];
您将该集合初始化为空数组,这将阻止您的函数在ng-repeat
分析遇到undefined
希望它有所帮助。