Extjs 4组合xml商店加载?

时间:2013-11-24 02:12:24

标签: extjs

我使用的是ext-4.2.1,下面是代码。它有两个问题,(1)buildCategoryStore(),combo找不到商店。 (2)下面是xml数据,看起来像商店xml阅读器不起作用,如何设置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>

1 个答案:

答案 0 :(得分: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'
        }];
    }
});