2011-10-26 1 views
1

grid.Panels를 동적으로 만들고 내 View에 추가하려고합니다. 이전에 많은 "Views"가 필요하다는 것을 모르기 때문에 데이터를로드합니다. 예를 들어 여러 그룹의 사람들이 있습니다. 일단 데이터를로드하면 그리드를 만들고 싶습니다. 각 그룹의 패널을 작성하고 올바른 사람을 입력하십시오.extJS : Controller에서 View로 Grid.Panel을 추가하면 응용 프로그램이 멈추는 문제 (MVC)

문제는 (스토어가 반복적으로로드되고 아마 때문에) 내가

는 어떻게하면 매달려없이 스토어에서 데이터를 내보기에 grid.Panel를 추가하려면 그것을 할 때 내 응용 프로그램이 응답이다?

내 컨트롤러 :

Ext.define('NG.controller.Navigation', { 
    extend: 'Ext.app.Controller', 

    refs: [{ 
     selector: 'group', 
     ref: 'groupPanel'} 
    ], 

    stores: ['Groups'], 

    init: function() { 
     this.control({ 
      'navigation': { 
       itemdblclick: this.onNavigationSelection 
      } 
     }); 
    }, 
    onNavigationSelection: function(view, record, item, index, eventobj, obj) { 

     var groupsstore = this.getGroupsStore(); 

     var group1 = Ext.create('Ext.grid.Panel', { 
      store: groupsstore, 
      title: 'Group 1', 
      columns: [ 
        {header: 'Name', dataIndex: 'name'}, 
        {header: 'Mail:', dataIndex: 'mail'} 
      ] 
     }); 

     groupsstore.load(); 

     this.getGroupPanel().add(group1); 
    } 
}); 

내보기 : (가 필요 확실하지 않은 경우)

Ext.define('NG.view.Group', { 
    extend: 'Ext.panel.Panel', 
    alias: 'widget.group', 
    store: 'Groups', 
    initComponent: function() { 
     this.callParent(); 
    } 
}); 

그리고 내 스토어 :

Ext.define('NG.store.Groups', { 
    extend: 'Ext.data.Store', 
    requires: 'NG.model.Person', 
    model: 'NG.model.Person' 
}); 

안부 사전에 감사합니다 !

Andreas

+0

모든 상점에 동일한 상점을 할당했기 때문에 문제가 발생한 것일 수 있습니다. – nscrob

+0

안녕하세요 nscrob, 답장을 보내 주셔서 감사합니다. 나는 실제로 하나의 상점에서만 위의 코드를 사용하고 있는데, 실패하기 때문에 더 이상 추가하지 않으려 고합니다. (분명히 실패 할 것이기 때문입니다). 그 일을 분명히하지 않으면 죄송합니다. – andreasnauta

+0

브라우저의 콘솔에 오류 메시지가 있습니까? – suknic

답변

0

store.load() 이벤트는 비동기입니다. 주위의 추가 패널과로드 저장 이벤트를 전환하십시오 :

this.getGroupPanel().add(group1); 
groupsstore.load(); 

다른 것은 당신이 그것을로드 가게에 아무것도 전달하는 것처럼 보이지 않는 것입니다. 따라서 미리로드하고 데이터를 미리 준비 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다 :) 나는 이벤트를 전환하고 상점을 자동로드하려고했지만 같은 결과로 인해 응용 프로그램이 중단됩니다. 나 또한 (네비게이션 컨트롤러에있는) 로컬 저장소를 만들고 그걸 추가하려고 시도했는데, 또한 응용 프로그램이 멈추는 원인이되었다. 따라서 "로드 된"저장소가있는 grid.Panel을 추가하면 응용 프로그램이 중지됩니다. groupsstore.load를 주석 처리하면 grid.Panel이 제대로 추가됩니다. – andreasnauta