ExtJS卡布局

时间:2013-06-10 08:03:53

标签: layout extjs

我使用卡片布局在两个创建的面板之间切换:

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。

1 个答案:

答案 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调用可能会在子元素渲染之前执行......