2015-09-04 125 views
1

ngRepeat的过滤后的结果我有一个NG重复网格,其是这样的:不能访问控制器

<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 $为“不确定”,之前或应用滤波器之后。 我需要做什么才能访问范围内的过滤结果?

回答

1

我测试它,这个问题是由于这样你初始化值:

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

解决方法很简单:

  • 的VAR添加到您的范围在控制器的开始。

$scope.filteredResults = []; 

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

希望它帮助。

+0

感谢您的回复。我试过了,我没有再次得到'undefined'错误,但是如果我试图在$ scope中使用console.log $ scope.filteredResults $ watch,我总是会得到一个空数组。我可以解决它的问题,但是我想明白为什么它不是这样工作的... –

+0

@CarlosYasuda我可能在这里错过了一些东西。你可以尝试在重新生成中重现错误吗? (这里是我的一个分支,从http://plnkr.co/edit/EKpWUl85bw8u1DGwhcpC?p=preview开始) – Okazari