2014-05-14 4 views
0

"Category"속성이있는 객체의 배열이 있습니다. 내 반복에서 이전 값을 확인하기 위해 items[$index - 1]을 사용하여 이전 값과 다른 경우 범주 이름이있는 머리글 행을 조건부로 표시하여 그룹을 만듭니다. 이것은 작동하지만, orderBy 필터를 적용하면 $ index가 새로운 순서를 반영하지 않는 것처럼 보일 것입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?orderBy가 적용된 후 ng-repeat에서 이전 객체를 얻는 방법

답변

5

게시 한 즉시 수정할 수있는 것을 깨달았습니다. 나는 track by item.itemId을 추가했으며 예상대로 작동하기 시작했습니다.

<div class="row" ng-repeat="item in items track by item.itemId | filter: searchTerms | orderBy:['Category1', 'Category2']"> 
    <div class="rowHeader" ng-show="$index == 0 || item.Category1 != items[$index -1].Category1"> 
    {{item.Category1}} 
    </div> 
</div> 
+0

나는 저에게 효과적이지 않습니다. 나는 항상 임의의 이전 개체를 얻습니다. 또한, "track by"문을 orderBy 파이프 앞에 놓으면 목록이 정렬되지 않습니다. orderBy 뒤에 "track by"을 넣으면 목록이 정렬됩니다. – tomahim

+0

[이 답변] (http://stackoverflow.com/a/15413253/4519548)에서 볼 수 있듯이 orderBy가 요소를 엉망으로 만들고 올바른 배열을 대신 생성해야합니다. –