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);
},
}],
});
奇怪的问题,因为你试图找出开发人员在运行时是否做错了什么。
但无论如何 - 这是您的问题的一种解决方案:
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.')
}
},
在创建的组件中动态添加项目时,如果项目中出现错误,应用程序会崩溃。
未创建项目时不存在此问题
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);
},
}],
});
奇怪的问题,因为你试图找出开发人员在运行时是否做错了什么。
但无论如何 - 这是您的问题的一种解决方案:
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.')
}
},