2015-09-04 173 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