2014-02-08 1 views
0

나는 EXTJS에서 컨트롤러에서 저장소를 얻은 다음이를로드하는 함수가 있습니다.extjs 시간 복잡 Store.load 메서드

functionName: function (controller) { 
    return function() { 

     Ext.widget('callWindow'); 
     var variable= cotroller.getCallWindowPopup(); 
     controller.getAccountsStore().load({ 
      params: { 
       source_system_id: ssid 
      }, 
      callback: function (records) { 
       variable.loadRecord(records[0]); 
      } 
     }); 
    } 

} 

계정 저장소는 수천 개의 레코드가있는 json 저장소입니다. 여기에 비싼 작업은 무엇입니까? getAccountsStore 또는로드 메소드 로드가 비싼 경우 어떻게 여러 번 호출하지 않아도됩니까?

답변

1

getAccountsStore은 컬렉션에서 참조를 찾아 보는 것입니다. 물론 load은 비쌉니다. 저장소의 모든 데이터를로드하여 각 레코드를 모델 객체로 인스턴스화합니다.

일반적으로 데이터가 변경되고 새로 고침하지 않는 한 load 번을 두 번 이상 호출 할 필요가 없습니다.

페이지 된 저장소를 사용하는 경우 로딩 시간을 줄일 수 있습니다. 이렇게하면 한 페이지의 데이터 만 상점에로드됩니다. 이는 귀하의 맥락에서 받아 들일 수도 아닐 수도 있습니다.

+0

다른 매개 변수로 두 개의 다른 함수에서로드를 호출해야하는 상황이 있습니다. 어떻게해야합니까? – Arun

+0

모두로드하는 데이터에 따라 다릅니다. 동일하거나 콜백이 변경되는 경우 두 번 이상로드하면 안됩니다. 그러나 데이터가 동일하지 않은 경우 (예 : 필터가 변경되면 각 변경 사항을로드 할 수 없습니다. –

+0

전역 변수를 추가하고 다른 함수에서 사용한 콜백 함수에 레코드 [0]을 저장했습니다. 왜냐하면 값 비싼 load 메소드를 호출하지 않고도 다른 함수에서 액세스하려고했던 객체이기 때문입니다. – Arun