前言
大家都知道默認在ng-repeat的時候每一個item都要保證是唯一的,否則console就會打出error告訴你哪個key/value是重復的。
如:
$scope.items = [ 'red', 'blue', 'yellow', 'white', 'blue'];
這個數組blue就重復了,html這么遍歷它
<li ng-repeat="item in items">{{ item }}</li>控制臺就會拋出一個錯誤:

點擊錯誤鏈接到Angular官網看詳細錯誤,官網明確給出是因為值重復了:
Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: item in items, Duplicate key: string:blue, Duplicate value: blue
解決方法
這就納悶了,正常的業務里數組有重復的值是很正常的,數組要硬要搞成唯一的ng-repeat才能遍歷就白瞎了,繼續往下看,發現官網給了一個解決的方案
<div ng-repeat="value in [4, 4] track by $index"></div>
于是按照這個方案改了一下
<li ng-repeat="item in items track by $index">{{ item }}</li>刷新網頁,內容被正常解析

其實ng-repeat還是需要一個唯一的key,只不過你不track的話默認就是item本身,另外也只有在普通數據類型字符串,數字等才會出現這個問題,如果換成Object
$scope.items = [ ['red'], ['blue'], ['yellow'], ['white'], ['blue']];
html恢復為
<li ng-repeat="item in items">{{ item }}</li>執行結果:

不明白的童鞋那就自己看看下面的運算表達式,猜猜結果是什么,然后在瀏覽器的控制臺試一試你的答案是否正確
[] === []
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
新聞熱點
疑難解答