ExtJS 5.1:在'boxready'事件的形式上更改组合框的存储

时间:2015-07-03 01:16:04

标签: events extjs combobox

我在表单的boxready事件或对话框完全呈现之前发生的任何其他事件(组合框的afterrender等)上对组合框的商店执行任何操作时遇到问题。

E.g。类似this.getCombobox().getStore().removeAll()之类的东西可以完美地处理在窗体上触发的任何事件,除了最初在对话框/元素加载期间发生的事件...

1 个答案:

答案 0 :(得分:0)

  

在表单上对组合框的商店执行任何操作时出现问题   boxready事件或在对话框之前发生的任何其他事件   完全渲染(组合框的后期渲染等)

No problems at all

Ext.widget({
    xtype: 'form',
    items: [
        {
            xtype: 'combo',
            store: Ext.create('Ext.data.Store', {
                fields: ['abbr', 'name'],
                data : [
                    {"abbr":"AL", "name":"Alabama"},
                    {"abbr":"AK", "name":"Alaska"},
                    {"abbr":"AZ", "name":"Arizona"}
                ]
            }),
            fieldLabel: 'Choose State',
            queryMode: 'local',
            displayField: 'name',
            valueField: 'abbr',
            listeners: {
                'afterrender': function() {
                    console.log("combo's afterrender");
                }
            }
        }
    ],
    renderTo: Ext.getBody(),
    listeners: {
        'boxready': function() {
            console.log("form's boxready");
            this.down('combo').getStore().setData([
                    {"abbr":"ME", "name":"Middle Earth"}
                ]);
        },
        'afterrender': function() {
            console.log("form's afterrender");
        }        
    }
});

顺便说一句,正如您在小提琴中看到的那样,boxready发生在afterrender之后,而不是之前。