다음 코드가 있습니다.ng-repeat에서 무한 다이제스트 루프를 발생시키는 함수 사용
https://plnkr.co/edit/Tt7sWW06GG08tdJu72Fg?p=preview. 전체 화면을 보려면 창을 완전히 확장하십시오.
나는 위의 그림과 같이 navbar에 표시 할 categories
과 sub-categories
입니다. 각 카테고리에는 표시 할 서비스/하위 카테고리가 있습니다.
두 개의 중첩 된 ng-repeats
을 사용하고 있으며 내측은 ng-repeat
의 부모 반복의 값을 사용하고 있습니다. DocumentsFactory
에서 getServicesByCategory
을 호출하고 을 호출하여 배열 객체 subcategories
에 데이터를 반환하도록 결정하는 내부 을 내부 번호 ng-repeat
에 의해 반복적으로 처리해야합니다.
카테고리가 잘 표시되지만 하위 카테고리는 그렇지 않습니다.
두 가지 문제가 있습니다.
1). 하위 카테고리는 모든 카테고리에서 동일하게 표시되며, 표시된 카테고리는 외부 ng 반복 반복의 마지막 카테고리에 속합니다. 즉 Utility Services
입니다. 대신 각 카테고리에는 자체 하위 카테고리가 표시되어야합니다.
2). 콘솔에 $ rootScope/infdig? p0 = 10 & p1 = % 5B % 5D이 (가) 반복적으로 발생하는 오류로 인해 infinite digest cycle
의 오류가 10 개를 초과하여 중단되었습니다. getServicesByCategory
메서드는 여러 다이제스트 사이클을 트리거하는 무한 루프에서 호출되고 있습니다.
Angular의 dirty checking
및 digest cycles
에 의해 간단한 카테고리 문제가 복잡해 보입니다.
나는 여러 스레드와 게시물을 읽고 ng-repeat와 관련된 함수 내에서 새 객체를 반환하지 않을 것을 제안합니다. 나는 subcategories
의 참조를 반환합니다.
ng-repeat는 outer
의 데이터에 따라 다릅니다. ng-repeat에 함수를 바인딩하는 것은 나를위한 유일한 옵션이었습니다. 이것이 올바른 접근 방법입니까? 카테고리와 하위 카테고리를 가져 오는 API는 다르기 때문에 변경할 수있는 유연성이 없습니다. 나는 해결책을 찾을 수 없었다. 각 카테고리에 맞는 하위 카테고리를 만들고 싶습니다.
도움이 될 것입니다!
참고 :보기를 전체 창에서 열면 왼쪽에있는 탐색 모음이 표시됩니다.