2014-11-28 3 views
0

데이터베이스에서 2000 개의 행을로드해야합니다. API에로드하는 것만으로 액세스가 빠르지 만 (예 : domain.com/api/contacts/) $ HTTP를 사용하여 ng-repeat를 사용하여 인쇄하려고하면 같은 양의 데이터를로드하는 데 거의 10 초가 걸립니다.

그런 다음 질문이 있습니다. 끝나기 전에 $ http의 응답을로드 할 수 있습니까?

날이 검색 목적

의 시작에서 모든 행을로드하는 것이 매우 중요하기 때문에 나는 게으른 부하 플러그인을 사용하지 않으

내가

$http.get('/api/contacts/').success(function (data) { 
    $scope.contacts = data 
}).error(function (err) { 
    console.log(err) 
}); 
을 사용하고있는 코드는

그리고 나는 내 브라우저를 통해 API를 호출 할 때 요청이 종료되기 전에 결과가 로딩을 시작하는 것이이며, 구약에 표시되는 내용

<ul> 
    <li ng-repeat="c in contacts">{{c.contact_name}}</li> 
</ul> 

를 사용하여 결과를 인쇄 그녀의 손은 요청이 끝날 때까지 결과를 인쇄합니다.

+1

10 초가 걸립니다. '$ http'를 호출하거나 ng-repeat를 사용하여 데이터를 렌더링하는 데 걸리는 시간은? –

+0

응답을 소비하고 렌더링하는 데 걸리는 시간 – Ced

+0

주어진 정보 또는 정확히 무엇을 묻는 지 문제가 무엇인지 말할 수는 없습니다. 크롬 개발자 도구의 네트워크 탭에서 타이밍은 어떻게됩니까? 코드에 자바 스크립트 객체로 데이터를 붙여 넣는다면 10 초가 걸린다. 데이터를 별도의 변수에로드하고'ng-repeat'에 사용 된 변수를 설정하기 위해 디버깅을위한 버튼을 만들면 너무 오래 걸리는 것을 알 수 있습니다. [angularjs batarang] (https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk?hl=ko) 코드를 프로파일 링 해보십시오. –

답변

0

내가 때문에 상관이 각도 큰 DOM 조작의 너무 오래 걸리는 말하고 싶지만 ...

당신은 무엇을/추가에 개별적으로 각 청크를 추가, 작은 조각에 큰 배열을 무너 뜨리는 경우 ngRepeat에 사용 된 부동산?

//on $htttp success... 
var dataRows = data; //data is your array with 2000 items 
var delay = 0; //in milliseconds 

//var to be used in ngRepeat 
$scope.rows = []; 

//each loop will extract the first objects from the array until the array is empty 
while(dataRows.length) { 
    delay += 20; //time span between every timeout call 
    //using $timeout so it creates a new thread (don't lock UI) 
    $timeout(function() { 

     //take the first 50 items from the Array 
     var thisChunk = dataRows.splice(0, 50); 

     //append the 50 items to the $scope var 
     $scope.rows.push.apply($scope.rows, thisChunk); 

    }, delay); 
} 

각 시간에 추가 할 항목 수와 각 시간 초과 호출 사이의 밀리 초를 조정할 수 있습니다.

+0

고마워요! 나는 그것에게 시도를 줄 것이다, BTW, 그것은 점차적으로로드되는 시내처럼 빨리 쓸 수 있는가? – Ced

관련 문제