IEでパネルが正常に表示されない



と書く
コンポーネントがadd(Ext.Component/object component):Ext.Componentを呼び出すと
コンポーネントにComponentを追加する場合は、doLayout()メソッドを呼び出してレイアウトを更新しなければ、追加したコンポーネントが見えません.
 
problems:
Extのシステム開発では、cardレイアウトでMpanelを実現し、panelにitems:panel、panelを追加し続け、サブpanelにitems:Formpanelを追加し続け、Formpanelにitems:field、field...を追加しました.(以上のサブアセンブリはすべてMpanelを作成する時に加入したもので、動的ロードではない).setActiveItem()を採用して異なるpanel間の切り替えを実現し、IEでpanelを切り替えた場合、FormPanelが正常に表示されない.FireFoxに正常に表示されます.
 
分析:
IEでsetActiveItem()の後にdoLayout()を呼び出す必要があり、FormPanelが正常に表示されます.
 
setActiveItem : function(item){
        item = this.container.getComponent(item);
        if(this.activeItem != item){
            if(this.activeItem){
                this.activeItem.hide();
            }
            this.activeItem = item;
            item.show();
            this.layout();
        }
    },

 
setActiveItem()は、this.layout()に注意し、現在のコンポーネントのlインタフェースの再レイアウトのみが設定されています.
 
doLayout : function(shallow){
        if(this.rendered && this.layout){
            this.layout.layout();
        }
        if(shallow !== false && this.items){
            var cs = this.items.items;
            for(var i = 0, len = cs.length; i < len; i++) {
                var c  = cs[i];
                if(c.doLayout){
                    c.doLayout();
                }
            }
        }
    }

doLayout()は、現在のコンポーネントおよびコンポーネントの各サブコンポーネントを再レイアウトします.
 
cardレイアウトのサブパネルには、いくつかのレイヤのitemsが含まれているため、これらのコンポーネントはレンダリングできません.
 
firefoxでなぜ表示されるのか、I don't know.