2016-01-23 49 views
0

我看到很多與「髒檢查」有關的問題。想確認我的下面的問題是由於這一點。AngularJS ng-repeat循環比記錄的實際長度長一倍

我有JSON字符串從RestService:基本上兩個記錄

[{"intRowId":111,"fltAmt":6.0,"intCnt":2,"category":{"intCatId":2,"strCatName":"Rent"},"monthYear":"2016-01-01"}, 
{"intRowId":112,"fltAmt":3.0,"intCnt":1,"category":{"intCatId":3,"strCatName":"Phone"},"monthYear":"2016-01-01"}] 

我已經NG-重複在HTML頁面中:我打電話的方法AssignValues。

<tr ng-repeat="op in resultReport"> 
     <td>{{$index+1}}{{resultReport.length}}{{AssignValues(op.fltAmt,$index,op.monthYear)}}</td> 
     <td>{{op.fltAmt|currency}}</td> 
     <td>{{op.intCnt}}</td> 
     <td>{{op.category.strCatName}}</td> 
     <td>{{op.monthYear}}</td> 
     </tr> 

AssignValues在我的控制器中:打印四次。

$scope.AssignValues = function(amt,ind,mYr){ 
     $log.log(amt); 
    } 

其實我在JSON中有兩個記錄,但該函數打印出的值比實際長度重複多。它只打印6,3,6,3而不是6和3。屏幕截圖如下。任何人都請幫助我理解這一點。

enter image description here

+0

函數必須被調用兩次! –

+0

它是由角1x設計的,不要直接從模板調用函數。 – YOU

+0

感謝@NitinVarpe快速回答。我編輯了這個問題。我的意思是,而不是兩個記錄,它實際上打印4次。 – Shamseer

回答

2

的消化循環在於,直到他們的價值是穩定的評估表達式。要知道它們是否穩定,角度需要對它們進行兩次評估,以測試從第一次評估中獲得的值是否與從第二次評估中獲得的值相同。

所以你看到的是預期的和正常的。

+0

感謝您的澄清。任何參考可能真的有幫助 – Shamseer

+1

https://docs.angularjs.org/guide/scope,https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest –

+0

我從來不知道!謝謝。 –