TypeError:combo.getSelection(...)在呈现事件中为null。 Extjs 6

时间:2018-10-18 14:12:04

标签: javascript extjs

在Ext.window.Window组件中,我使用组合框字段:

Ext.define('BookApp.view.BookEdit', {
extend: 'Ext.window.Window',
alias: 'widget.bookwindowedit',  
layout: 'fit',
autoShow: true,
store: 'BookStore',
modal   : true,
initComponent: function() {
    var me = this;
    me.myStates = Ext.data.StoreManager.get('States').load();    
    me.items = [{
            xtype: 'form',
            items: [                
            {
                xtype: 'combobox',
                fieldLabel: 'Статус',
                name: 'status',
                store: me.myStates,
                valueField: 'name',
                displayField: 'name',
                typeAhead: true,
                queryMode: 'remote',                    
                listeners: {
                            'select': function (combo, records) {
                                index = records.internalId;

                                filterCombo(combo, index);
                            },              

                       'boxready': function () {
                     console.log("form's boxready");    
                    index =       combo.getSelection().internalId;
                      filterCombo(combo, index);
                        }
                    }
            },             
            ]
        }];
    me.buttons = [{
            text:'Save',
            iconCls:'save-icon',
            action: 'save'
    },
    {
            text: 'Clear',
            scope: this,
            action: 'clear'
    }
    ];

    me.callParent(arguments);
}
});   



function filterCombo(combobox, index) {
            store = combobox.getStore();
            store.clearFilter();
            store.filterBy(
                function(record) {
                    if ((record.data.order_install == index - 1)  || (record.data.order_install == index + 1)) {
                        return true;
                    } else {
                       return false;
                    }
                }
            );
        };

当尝试在render事件的侦听器中获取索引条目时,会发生错误:

  

TypeError:combo.getSelection(...)为空

为什么会发生错误以及如何正确获取索引条目? 添加boxready事件以获取记录时,此事件不起作用。

1 个答案:

答案 0 :(得分:1)

在使用“ initComponent ”的定义时,请确保调用 "this.callParent()" 在“ initComponent”定义的末尾。 在触发“ render ”事件时,将没有任何选择,因此您将获得空数组。 通过“ combo.setSelection(0)”之类的方式显式设置选择。