4.1

2012-07-19 4 views
15

나는 저장소가 새로운 데이터를로드 할 몇 가지 이벤트에,이4.1

 
{ 
    xtype: 'combobox', 
    emptyText: 'Functions' 
    store: [ 'none' ] 
} 

같은 콤보를 정의, 그래서 콤보 상자에서 가게를 얻고 이것을 시도 :

 
oFunctionStore.loadData(['dothis', 'dothat', 'dosomething' ]); 

그러나이 후에 콤보 상자에는 눈에 보이는 내용이없는 드롭 다운이 있습니다. 단지 빈 줄뿐입니다.

답변

17
// Change this... 
oFunctionStore.loadData(['dothis', 'dothat', 'dosomething' ]); 

// to this... 
oFunctionStore.loadData([ [ 'dothis' ], [ 'dothat' ], [ 'dosomething' ] ]); 
  • 콤보 암시 적 모델로 배열을 변환 것이다 Ext.data.ArrayStore 만듭니다. loadData에 전달

  • data 파라미터 모델들의 어레이, 또는 (이 경우, 배열의 배열 ) 모델로 변환 할 수있는 것보다 오브젝트의 배열이 될 것으로 예상된다.

  • 초기 저장소로드에서 원래 배열은 배경 뒤 [ [ 'none' ] ]으로 변환되었습니다. 주요 콤보에 대한 저장 -

는 예를 here

1

carStore를 참조하십시오.

carModelStore - carStore의 선택에 의존해야한다 스토어 - 기반의 콤보 상자

var carModelStore = new Ext.data.Store({ 
    reader: new Ext.data.JsonReader({ 
     fields: ['id', 'car-model'], 
     root: 'rows' 
    }), 
    storeId: 'car-model-store', 
    proxy: new Ext.data.HttpProxy({ 
     url: 'carmodeldataprovider.json?car-name=lamborghini' 
    }), 
    autoLoad: true 
}); 


{ xtype: 'combo', name: 'car-name', fieldLabel: 'Car', mode: 'local', store: carStore, triggerAction: 'all', 
    listeners: { 
     select: function(combo, records, eOpts){ 
      var carName = records.get('car-name'); // the element selected in combo 
      var carModelStore = Ext.StoreMgr.lookup("car-model-store"); 

      carModelStore.proxy.setUrl('carmodeldataprovider.json?car-name=' + carName, false); 
      carModelStore.reload(); 
     } 
    } 

}