我使用卡片布局在两个创建的面板之间切换:
var config = {
layout: 'card',
region : 'center',
activeItem: 0,
defaults : {
//height : 160
},
items : [this.ePanel, this.dPanel]
};
Ext.apply(this, config);
切换基于标准进行:
if(params.exchange==='ABCD'){
l.setActiveItem(this.ePanel.id);
} else {
l.setActiveItem(this.dPanel.id);
}
当我在面板之间切换时,其中一个面板内容会变形。这个问题有什么解决方案吗?我正在使用ExtJS 2.2。
答案 0 :(得分:1)
我从未使用过Ext2,但是我遇到过与Ext3类似的困难。您可以尝试以下两个想法......
将deferredRender
设为true
。
在setActiveItem
之后调用doLayout
,可能是在一小段延迟之后(因为渲染通常在Ext中延迟):
l.setActiveItem(this.ePanel.id);
setTimeout(function() {
l.doLayout();
}, 100); // more may be needed, one need to inspect Ext's code to know the precise value
doLayout
通常是布局问题的解决方案,但它通常还需要进行大量调试才能应用它。实际上,布局被缓存(至少在Ext3中),因此如果Ext在内部认为没有任何改变,则可以忽略您的调用。此外,正如我已经说过的,渲染通常是延迟的,所以如果你没有延迟,你的doLayout
调用可能会在子元素渲染之前执行......