为什么我的ExtJS 4.2组合框没有更新?

为什么我的ExtJS 4.2组合框没有更新?,extjs,Extjs,在下面的代码中,当用户第一次从第一个组合中选择值时,第二个组合不会被填充。第二次在第一个组合中选择值时,第二个组合已正确填充 这是一个简化的示例,但是如果我们能够解决这个问题,我的较大代码中的问题也可能得到解决 Ext.onReady(function() { var level1Store = Ext.create('Ext.data.Store', { fields: [{ name: 'Level1name' }, { name: 'Level2na

在下面的代码中,当用户第一次从第一个组合中选择值时,第二个组合不会被填充。第二次在第一个组合中选择值时,第二个组合已正确填充

这是一个简化的示例,但是如果我们能够解决这个问题,我的较大代码中的问题也可能得到解决

Ext.onReady(function() {
    var level1Store = Ext.create('Ext.data.Store', {
        fields: [{    name: 'Level1name'   }, {    name: 'Level2names'   }],
        data: [
            {   "Level1name": "level1 value1",
                "Level2names": [
                    { "Level2name": "level1 value1_1"},
                    { "Level2name": "level1 value1_2"},
                    { "Level2name": "level1 value1_3"}
                ]
            },
            {   "Level1name": "level1 value2",
                "Level2names": [
                    { "Level2name": "level1 value2_1"},
                    { "Level2name": "level1 value2_2"},
                    { "Level2name": "level1 value2_3"}
                ]
            },
            {   "Level1name": "level1 value3",
                "Level2names": [
                    { "Level2name": "level1 value3_1"},
                    { "Level2name": "level1 value3_2"},
                    { "Level2name": "level1 value3_3"}
                ]
            }
        ]
    });
    var level2Store = Ext.create('Ext.data.Store', {
        fields: [{    name: 'Level2name'   }],
        proxy: {
            type: 'memory',
            reader: {
                type: 'json'
            }
        }
    });


    Ext.create('Ext.panel.Panel', {
        width: 500,
        height: 500,
        items: [{
            xtype: 'combo',
            id: 'combo1',
            fieldLabel: 'Level1',
            store: level1Store,
            displayField: 'Level1name',
            valueField: 'Level1name',
            listeners: {
                change: function() {                
                    var combobox = Ext.getCmp('combo1');
                    var v = combobox.getValue();
                    var record = combobox.findRecord(combobox.valueField || combobox.displayField, v);
                    var index = combobox.store.indexOf(record);


                    var dataSource = level1Store.getAt(index).get("Level2names");
                    level2Store.removeAll();
                    level2Store.add(dataSource);
                    level2Store.sync();
                }
            }
        }, {
            xtype: 'combo',
            fieldLabel: 'Level2',
            store: level2Store,
            displayField: 'Level2name',
            valueField: 'Level2name'
        }],


        renderTo: Ext.getBody()
    });
});

答案是将queryMode:“local”添加到组合框定义中:xtype:“combobox”,fieldLabel:“Test data”,store:“com.myCo.myStore”,queryMode:“local”,您可以回答自己的问题,这将是添加此选项的正确位置。