您的位置:首页 > Web前端 > JavaScript

Extjs关于tabpanel的 bug修改

2017-04-11 12:16 411 查看
 这篇文章主要是讲 deferredRender 这个属性的。

 bug描述:第一次进入页面之后没有问题,但是Tab来回切换之后每个items里的Panel就不加载了。
 经过修改,问题找到。源代码如下:
 
 Ext.onReady(function(){
   
 Ext.QuickTips.init();
     var
tabs2=new Ext.TabPanel(
   
 {renderTo:main,
     
     
activeTab:0,
     
     
     
activeTab:1,
     
     
plain:true,
     
defaults:{autoHeight:true},
     
items:[
     
      new
Ext.Panel(formDetail),
     
      new
Ext.Panel(formHandle),
     
      new
Ext.Panel(transcribeReply),
     
      new
Ext.Panel(waitingUserList),
     
      new
Ext.Panel(subFormList),
     
      new
Ext.Panel(prtFormList),
     
      new
Ext.Panel(attachmentList)
     
]
   
 }
   
 );
 }
);

我在plain:true,之后 deferredRender:false,问题迎刃而解。

在创建Ext.TabPanel时deferredRender配置项经常会被忽略。该配置项的默认值是true。true表示只有在用户第一次访问选项卡时,该选项卡的panel才会被渲染。
所以当我们有可能使用脚本操作选项卡时,谨记将该配置项设置为false。

在FormPanel中使用TabPanel,如果在TabPanel中不定义deferredRender的值为false,那么,当你使用Load方法为Form加载数据,或使用setValue为没有激活过的Panel的控件赋值时,将会发生错误。

原因是,在默认设置下deferredRender为true,TabPanel并不会渲染所有Panel上的控件,只有在该Panel被激活时才渲染控件,所以当你为这些控件设置数据时,将会找不到这些控件,会出现错误。

因而,在FormPanel中使用TabPanel,一定要在TabPanel中设置deferredRender的值为false,强制TabPanel在Layout渲染时同时渲染所有Panel上的控件。

额外福利:
Ext.QuickTips.init();  
 这一行代码的意义:QuickTips的作用是读取标签中的ext:qtip属性,并为它赋予显示提示的动作。
renderTo 与
 applyTo的区别:applyTo是将组件加在了指定元素之后,而renderTo则是加在指定元素之内
plain:true  
 一种使用简单的纯色样式,主要应用于Window样式上,此时只要此项的baseCls设置为x-plain,就可以达到纯色效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: