2013-11-24 102 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