Extjs 应用程序在动态添加一个有缺陷的项目时崩溃

Extjs application is crashed when dynamically adding one defective item

在创建的组件中动态添加项目时,如果项目中出现错误,应用程序会崩溃。

未创建项目时不存在此问题

Ext.define('Test', {
    extend: 'Ext.panel.Panel',

    initComponent: function () {
        //  make error
        // this.callParent();
    }
});

Ext.create('Ext.panel.Panel', {
    renderTo: Ext.getBody(),
    width: 400,
    height: 300,
    title: 'Application',
    layout: {
        type: 'vbox',
        align: 'center',
    },

    defaults: {
        margin: 10,
    },

    items: [{
        xtype: 'button',
        iconCls: 'x-fa fa-cog',
        handler: function (btn) {
            let mainPanel = btn.up('panel'),
                item = Ext.create('Test');

            // bug
            mainPanel.add(item);
        },
    }],
});


sencha fiddle

奇怪的问题,因为你试图找出开发人员在运行时是否做错了什么。

但无论如何 - 这是您的问题的一种解决方案:

        handler: function (btn) {
            let mainPanel = btn.up('panel'),
                item = Ext.create('Test');

            // bug testing
            if(Ext.isDefined(item) && Ext.isObject(item.layout)) {
                mainPanel.add(item);
            } else {
                console.error(item.id + ' could not be added because of an error I made.')
            }
        },