我在Ext 3.3中扩展了一个窗口,它在许多地方被调用,并且有很多自身的扩展。此窗口有一个可配置字段。当此字段为空或不包含任何项目时,我想显示错误消息而不是继续显示该窗口。这就是我接近它的方式:
data: null,
initComponent: function() {
if(data && data.length > 0) {
...
$this.superclass.initComponent.apply(this, arguments);
} else {
Ext.MessageBox.alert(...)
}
}
这是一个适当的方式/地方吗?我已经考虑过验证组件何时被调用,但考虑到会发生这么多地方,我不想要多余的代码。主要是我的困惑在于不清楚initComponent之前和之后发生了什么,或者是否有一种简单易读的方法可以完全消除组件调用。
编辑:以上肯定是错的。我认为这只是因为错误被抛出而没有渲染窗口。答案 0 :(得分:2)
在我看来,beforerender
事件将是一个好地方:
当您返回false时,组件将不会呈现。
listeners: {
beforerender: function(){
if(!data || data.length == 0) {
Ext.MessageBox.alert(...);
return false;
}
}
}