日期:2014-05-16 浏览次数:20331 次
在上一篇中,中间的tab 区块无法自动伸展的原因一句话说就是: 使用contentEL的方式,相关HTML元素不会参与组件使用的布局方案。
但是在实际的开发过程中, 有时后这种方式可能无法避免, 或者说已经开发的代码,如何最简单的修正这个问题。
利用center 区块的resize 事件可以解决这个问题。
因为在左边收合时,会触发center 区块的resize. 贴代码:
<html> <head> <title>Complex Layout</title> <!-- GC --> <style type="text/css"> p { margin: 5px; } .settings { background-image: url(../shared/icons/fam/folder_wrench.png); } .nav { background-image: url(../shared/icons/fam/folder_go.png); } .info { background-image: url(../shared/icons/fam/information.png); } </style> <script type="text/javascript" src="extjs/ext-all.js"></script> <link href="extjs/resources/ext-theme-neptune/ext-theme-neptune-all.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> Ext.require([ '*' ]); Ext.onReady(function() { Ext.QuickTips.init(); Ext.state.Manager.setProvider(Ext .create('Ext.state.CookieProvider')); var viewport = Ext .create( 'Ext.Viewport', { id : 'border-example', layout : 'border', items : [ // create instance immediately Ext .create( 'Ext.Component', { region : 'north', height : 32, // give north and south regions a height autoEl : { tag : 'div', html : '<p>north - generally for menus, toolbars and/or advertisements</p>' } }), { region : 'west', stateId : 'navigation-panel', id : 'west-panel', // see Ext.getCmp() below title : 'West', split : true, width : 200, minWidth : 175, maxWidth : 400, collapsible : true, animCollapse : true, margins : '0 0 0 5', layout : 'accordion', items : [ { contentEl : 'west', title : 'Navigation', iconCls : 'nav' // see the HEAD section for style used }, { title : 'Settings', html : '<p>Some settings in here.</p>', iconCls : 'settings' }, { title : 'Information', html : '<p>Some info in here.</p>', iconCls : 'info' } ] }, { region : 'center', width : '100%', height : '100%', layout : 'fit', contentEl : 'maintabs', listeners: { resize: function(thisObj,iWidth, iHeight, oldWidth, oldHeight) { var tabPanel = Ext.getCmp("tabPanel"); if (tabPanel!=null) { tabPanel.doLayout(); } } } } ] }); Ext.create('Ext.tab.Panel', { id: 'tabPanel', region : 'center', // a center region is ALWAYS required for border layout deferredRender : false, activeTab : 0, // first tab initially active renderTo : 'maintabs', layout : 'fit', items : [ { contentEl : 'center1', title : 'Close Me', layout : 'fit', closable : true, autoScroll : true }, { contentEl : 'cen