2013-11-24 5 views
0

Я использую ext-4.2.1, ниже приведен код. У этого есть две проблемы: (1) buildCategoryStore(), комбо не может найти магазин. (2) ниже - данные xml, похоже, что хранитель xml-считывателя не работает, как настроить корень xml?Extjs 4 combo xml store load?

Благодаря

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

Смежные вопросы