2013-11-24 2 views
0

나는 ext-4.2.1을 사용하고있다. 아래는 코드이다. 그것은 두 가지 문제가 있습니다 : (1) buildCategoryStore(), 콤보가 가게를 찾을 수 없습니다. (2) 아래의 XML 데이터는 xml 리더가 작동하지 않는 것처럼 보입니다. xml 루트를 설정하는 방법은 무엇입니까?Extjs 4 콤보 xml 저장소로드?

감사

Ext.define('App.view.QuestionForm',{ 
    extend  : 'Ext.form.Panel', 
    alias  : 'widget.QuestionForm', 
    requires : [], 

    initComponent : function(){ 
     var me = this; 

     me.items = me.buildItems();  
     me.callParent(); 
    }, 

    buildCategoryStore: function(){ 
     var CategoryStore = Ext.create('Ext.data.Store', { 
      autoLoad: true, 
      fields: ['id','name'], 
      proxy: { 
       type: 'ajax', 
       url: 'rs/question/getAllCategories', 
       reader: { 
        type:'xml', 
        root: 'CategoryList' 
       } 
      }, 
      storeId: 'CategoryStore', 
      root: 'CategoryList' 
     }); 
     return CategoryStore; 
    }, 
    buildItems : function(){ 
     return [ 
     { 
      xtype: 'combo', 
      anchor: '100%', 
      fieldLabel : 'Category', 
      store: buildCategoryStore(), 
      name: 'category',   
      mode: 'local', 
      multiSelect: false 
     }, 

     ]; 
    }, 

    } 

}); 

XML 데이터 :

<CategoryList> 

<Category> 
<active>Y</active> 
<id>1000</id> 
<name>Life</name> 
<versionNum>0</versionNum> 
</Category> 

<Category> 
<active>Y</active> 
<id>1001</id> 
<name>Career</name> 
<versionNum>0</versionNum> 
</Category> 
</CategoryList> 

답변

0

난 당신의 코드를 수정했습니다. 중요한 부분은 this.foo()으로 전화해야하며 독자에게 레코드 매개 변수를 지정해야합니다.

Ext.define('App.view.QuestionForm', { 
    extend: 'Ext.form.Panel', 
    alias: 'widget.QuestionForm', 

    requires: [ 
     'Ext.data.Store' 
    ], 

    initComponent: function() { 
     this.items = this.buildItems(); 
     this.callParent(); 
    }, 

    buildCategoryStore: function() { 
     return new Ext.data.Store({ 
      autoLoad: true, 
      fields: ['id', 'name'], 
      proxy: { 
       type: 'ajax', 
       url: 'rs/question/getAllCategories', 
       reader: { 
        type: 'xml', 
        record: 'Category' 
       } 
      } 
     }); 
    }, 

    buildItems: function() { 
     return [{ 
      xtype: 'combo', 
      anchor: '100%', 
      fieldLabel: 'Category', 
      store: this.buildCategoryStore(), 
      name: 'category', 
      mode: 'local', 
      multiSelect: false, 
      valueField: 'id', 
      displayField: 'name' 
     }]; 
    } 
}); 
+0

감사합니다. 첫번째 부분은 고정되어있다. 하지만 두 번째 경우에도 드롭 다운에 옵션 값이 표시되지 않았습니다. – user595234

+0

displayField/valueField도 누락되었습니다. –

+0

네, 이제 작동합니다. 너는 슈퍼맨이야. Extjs는 디버깅하기가 매우 어렵습니다. 이 오류를 어떻게 알았습니까? – user595234

관련 문제