0

메뉴 버튼 ("클라이언트"), 선택한 클라이언트 세부 정보가있는 클라이언트 목록 (이름순으로 정렬 됨)이있는 트리 패널 및 뷰어가 있습니다. 또한 선택 변경 작업이 있습니다.스토어에 데이터로드 대기 방법

내 작업 - 버튼 클릭 클라이언트보기로 전환하고 버튼을 클릭 할 때마다 첫 번째 클라이언트의 세부 정보를 선택하고로드합니다. 내 문제 - 저장소가로드되지 않습니다. ext js가 데이터를 저장소로 자동로드 할 때까지 기다리는 방법은 무엇입니까?

내 컨트롤러 코드 :

me.control({ 
     '#nav-client': { 
      click: me.onNavClientClick 
     }, 
    ... 
     'clientlist': { 
     // load: me.selectClient, 
      selectionchange: me.showClient 
     } 
    }); 

    onNavClientClick: function(view, records) { 
     var me = this, 
      content = Ext.getCmp("app-content"); 
     content.removeAll(); 
     content.insert(0, [{xtype: 'clientcomplex'}]); 
     var first = me.getClientsStore().first(); 

     if (first) { 
      Ext.getCmp("clientList").getSelectionModel().select(me.getClientsListStore().getNodeById(first.get('clientId'))); 
     } 
    }, 
... 

두 가지 주요 질문 : 내 경우에는 좋은 해결책

  • 입니까?

    • 경우, (한 번 만) : "me.selectClient을로드"

      var first = me.getClientsStore().first(); 
      // i use another store to get first record because of i dont know how to get first record (on root level) in TreeStore 
      ... 
      Ext.getCmp("clientList").getSelectionModel().select(me.getClientsListStore().getNodeById(first.get('clientId'))); 
      
    • 내가이 코드를 알고

    이 경우 확인 작업 (나무 패널의 첫 번째 클라이언트를 선택합니다) 내가 버튼 클릭에이 코드를 삽입 - 내가 때문에 me.getC의 오류를

    Uncaught TypeError: Cannot read property 'id' of undefined 
    

참조 lientsListStore()가로드되지 않았습니다.이 저장소의로드 상태를 확인하고이 저장소가 완전히 자동로드 될 때까지 기다리는 방법은 무엇입니까? ...

감사합니다!

답변

0

'load'이벤트를 수신 대기 할 수 있습니다. 좋아요 :

... 
onNavClientClick: function(view, records) { 
    var me = this; 

    // if the store isn't loaded, call load method and defer the 'client view' creation 
    if (me.getClientsStore.getCount() <= 0) { 
    me.getClientsStore.on('load', me.onClientsStoreLoad, me, { single : true}); 
    me.getClientsStore.load(); 
    } 
    else { 
    me.onClientsStoreLoad(); 
    } 
}, 

onClientsStoreLoad : function() { 
    var me = this, 
     content = Ext.getCmp("app-content"); 
    content.removeAll(); 
    content.insert(0, [{xtype: 'clientcomplex'}]); 
    var first = me.getClientsStore().first(); 

    if (first) { 
     Ext.getCmp("clientList").getSelectionModel().select(me.getClientsListStore().getNodeById(first.get('clientId'))); 
    } 
}, 
...