sourcecode

많은 데이터를 포함하는 AngularJS 무한 스크롤

codebag 2023. 2. 22. 21:52
반응형

많은 데이터를 포함하는 AngularJS 무한 스크롤

그래서 AngularJS를 사용하여 무한 스크롤 테이블을 작성하려고 합니다.http://jsfiddle.net/vojtajina/U7Bz9/

문제는 jsfiddle의 예에서 100만 개의 결과를 얻을 때까지 스크롤을 계속하면 브라우저 속도가 느려진다는 것입니다. 지금 냐냐 because because because because because because because because because because 가 있기 입니다.1,000,000125.19달러 '아까', '아까', '아까', '아까', '아까', '아까' 같은 것만 요.1000items 내에서 에 표시되며, 있던 는 $scope.items의 범위 내에 .1000.

예: I first " : " " " " " " " " " " 。10 「」( 「」) 중)1,000,000내가 보기만 해도10첫, " " "1000결과는 실제로 로드됩니다.맨이다 라는 것을 볼 수 .10.맨가 될 예요.10서버에서 결과를 다시 로드해야 합니다.

저는 ExtJs와 함께 수천 개의 결과를 포함하는 무한 스크롤 목록을 만든 프로젝트를 수행했습니다.이를 처리하기 위한 ExtJ의 방법은 현재 결과 페이지를 로드한 다음 몇 페이지의 추가 결과도 미리 로드하는 것이었습니다.했던 것은 「아예」, 「아예」이었다.10로컬로 저장된 결과 페이지.

그래서 제 질문은 이걸 어떻게 AngularJS에서 구현해야 할까요?저는 코드를 많이 제시하지 않았기 때문에, 사람들이 코드화된 답을 줄 것이라고는 생각하지 않지만, 적어도 어느 방향으로 가야 할지 조언해 줄 것으로 생각합니다.

몇 가지 사항:

  1. "무한 스크롤"에서 "1,000,000" 행까지 수백만 개의 DOM 노드를 생성했다고 해서 프레임워크에 관계없이 문제가 발생할 수 있습니다(각 레코드에 여러 요소가 있다고 가정).

  2. 도입에 대해 검토하고 있는 것<li ng-repeat="item in items">{{item.foo}}</li>또는 그와 같은 것은 한 가지 큰 이유로 인해 매우 빠르게 문제가 발생합니다.{{item.foo}}} 이와 는 ngBind를 합니다.$watch이 필드에서는 함수 참조 등의 형태로 많은 오버헤드가 발생합니다.10,항목 10,000개에서각 10,000개 항목에 대해 10,000~20,000개의 추가 기능 참조가 필요합니다.

이 경우 데이터를 최신 상태로 유지할 뿐만 아니라 "너무 멀리 있는" DOM 요소의 추가 및 삭제를 처리하는 지시문을 작성합니다.이로 인해 발생할 수 있는 대부분의 성능 문제가 완화됩니다.

...좋은 무한 스크롤은 간단하지 않습니다.죄송합니다.

angular-ui 구현 UI 스크롤이 마음에 들어요...

https://github.com/angular-ui/ui-scroll

...ngInfiniteScroll을 사용합니다.표준 무한 스크롤의 ui-scroll과 가장 큰 차이점은 뷰포트에서 나갈 때 이전 요소가 제거된다는 것입니다.

그들의 판독치로부터...

정의되지 않은 길이의 데이터 요소 목록을 사용자에게 표시하는 일반적인 방법은 목록의 맨 위에 작은 부분으로 시작하는 것입니다. 페이지 공간을 채울 수 있을 만큼만.사용자가 목록을 아래로 스크롤할 때 목록 하단에 추가 행이 추가됩니다.

이 접근법의 문제는 목록 위의 행이 보기에서 스크롤될보이지 않게 되더라도 여전히 페이지의 일부이며 리소스를 소비한다는 것입니다.사용자가 아래로 스크롤하면 목록이 늘어나고 웹 앱 속도가 느려집니다.

이것은 행을 나타내는html에 이벤트핸들러나 각도감시자가 접속되어 있는 경우에 문제가 됩니다.평균적인 복잡도의 웹 앱은 한 줄에 20명의 감시자를 쉽게 소개할 수 있습니다.100개의 행의 리스트에 대해서는, 총 2000명의 워쳐와 느린 앱을 제공합니다.

또한 ui-scroll이 능동적으로 유지됩니다.

당신이 찾고 있는 것은 http://kamilkp.github.io/angular-vs-repeat인 것 같습니다.이것은 가상 스크롤 지시입니다.

Angular의 ng-grid 모듈은JS는 내가 필요로 하는 것을 거의 정확하게 가지고 있다.예제 페이지를 보면 서버 측 처리 예제도 필요한 데이터만 로드하는 무한 스크롤 목록입니다.

어쨌든 댓글 달아주시고 답해주신 분들께 감사드립니다.

최신 URL : ng-grid

ng-infinite-scroll 을 사용해 보십시오.

http://binarymuse.github.io/ngInfiniteScroll/

각도 재료에서 virtualRepeat 확인

뷰포트 영역에 표시되는 행을 UI 스크롤과 같이 동적으로 재사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/14280905/angularjs-infinite-scrolling-with-lots-of-data

반응형