用angular指令遍歷一個(gè)javascript數(shù)組,當(dāng)數(shù)組中有重復(fù)元素的時(shí)候,angularjs會(huì)報(bào)錯(cuò),這是因?yàn)閚g-Repeat不允許collection(收集)中存在兩個(gè)相同Id的對(duì)象。
對(duì)于數(shù)字或者字符串等基本數(shù)據(jù)類型來說,它的id就是它自身的值。因此數(shù)組中是不允許存在兩個(gè)相同的數(shù)字的。為了規(guī)避這個(gè)錯(cuò)誤,需要定義自己的track by表達(dá)式。
// 業(yè)務(wù)上自己生成唯一的id
item in items track by item.id
//或者直接拿循環(huán)的索引變量$index來用
item in items track by $index
如果是javascript對(duì)象類型數(shù)據(jù),那么就算內(nèi)容一摸一樣,ng-repeat也不會(huì)認(rèn)為這是相同的對(duì)象。如果將上面的代碼中dataList,那么是不會(huì)報(bào)錯(cuò)的。比如$scope.dataList = [{"age":10},{"age":10}];