我試圖讓ng-repeat
在函數調用的結果,像角JS NG-重複 - 軌道通過動態收集
<body ng-init='a = [1, 2, 3]'>
<div ng-repeat='item in f(a) track by item[0]'>{{item}}</div>
</body>
其中f
是
function f (arr) {
return arr.map(function (v) {
return [v]
})
}
下面是Plunker與此代碼
問題是,在控制檯中,我們可以看到如10 $digest() iterations reached. Aborting!
這並不是因爲重建容器陣列的,因爲如果我們只是修改line 3
像
return [v] -> return v
,並刪除
track by item[0]
一切正常。這是因爲重新創建項目,並且track by
應該處理這個。但由於某些原因,它不:(
我也想不買track by
把不斷$$hashKey
每個項目來解決問題(即使在集合本身)。這裏是Plunker具有同樣的錯誤。希望有一個可以解釋這是爲什麼不工作
因此,有兩個獨立的問題:使用的情況下,並track by
用的情況下$$hashKey
BTW是的,我讀了幾次 How to Loop through items returned by a function with ng-repeat?和 AngularJS InfDig error (infinite loop) with ng-repeat function that returns array of objects多,但無法找到答案有
感謝
我已經做了一些調查,發現https://groups.google.com/forum/#!topic/angular/IEIQok-YkpU人們討論我真正的問題,簡化了我現在的問題。他們擁有的解決方案以及我的第二個(使用'$$ hashKey'操作)工作在舊角度,並且在現代版本中不起作用。我認爲剎車已經進入了1.1.3 - > 1.1.4,就在'track by'進入Angular時 – Agat