Extjs中由于ID重复引起的各种异常的解决方法
很多人使用EXTJS中的Tabpanel遇到一个问题:
那就是在点击Tabpanel后,有时会发现Tabpanel出现错误,或无法Destroy已经关闭的panel,发现已经关闭的panel
中的组件出现在了页面其他地方。这个问题,网上问的人非常多,却没有答案,我是无意间发现问题的关键的。
Tabpanel中的panel关闭却无法销毁其子组件,原因是panel中可能存在与其他panel中组件ID相同的组件,这是非常常见的问题了。
EXTJS基本上是靠ID来识别组件的,假如你在panel1中有个ID:"keyword"的textfield,而panel2中有个ID相同的textfield
,那么,当你关闭panel2,由于extjs发现panel2中的ID:"keyword"组件在panel1中仍然使用中,是不会销毁掉它的,于是它成为一个孤立的对象,从而造成混乱。
无论如何,你得时刻记着,任何时候,必须确保对象ID是唯一的。这有两个做法:
1,不给对象指定ID,然后使用组件的find方法通过其他属性来查找对象,例如find("name","role"),结果产生一个array,当然,你的属性是唯一的,那你就可以用find("name","role")[0]这种形式引用组件。
2,你也可以用父组件ID+子组件ID的形式来指定子组件,这个方法更好,并且extjs内部就是这么做,子组件的ID变成了:this.id+"_role",注意,这里的this是指父组件。在实例时,由于父组件的ID指定的一定是唯一的,所以,即便实例了两次同一个组件,两个实例的子组件却拥有唯一ID。从而可以很好的处理ID重复问题
ps:组件能不使用id就不要用id,很多人特别是初学者担心不使用id就没办法获得组件了(Ext.getCmp("id")),其实extjs已经提供了 相当多的方法和属性用来查找组件了,比如获取父类组件 有属性ownerCt,查找子类组件有方法child('')
和down(‘’)方法
Extjs中由于ID重复引起的各种异常的解决方法的更多相关文章
- dede取子栏目时重复显示同级栏目的终极解决方法
使用channelartlist标签时,当栏目没有子栏目是,会出现重复同级栏目的问题,解决方法如下: 先看下面的代码{dede:channelartlist typeid='2'} {dede:ty ...
- 关于真机调试DDMS中的data文件夹打不开的解决方法
关于真机调试DDMS中的data文件夹打不开的解决方法 今天在开发的时候需要导出程序中的数据库文件查看数据,数据库文件默认就在/data/data/应用包名/databases/数据库名 这个路径下, ...
- Node.js中针对中文的查找和替换无效的解决方法
Node.js中针对中文的查找和替换无效的解决方法. //tags的值: tag,测试,帖子 var pos1 = tags.indexOf("测"); //这里返回-1 ta ...
- SecureCRT中某些命令提示符下按Backspace显示^H的解决方法
SecureCRT中某些命令提示符下按Backspace显示^H的解决方法 安装了Apache Derby数据库服务器之后,使用ij客户端去连接derby服务端,可是在ij中输入命令的时候,每当输入错 ...
- GCC-4.6.3编译linux2.6.32.12内核出现“重复的成员‘page’”错误的解决方法
使用gcc4.6.3编译linux2.6.32.12内核出现错误如下: In file included from drivers/net/igbvf/ethtool.c:36:0: drivers/ ...
- Hadoop中操作HDFS出现异常的解决方法
Hadoop环境搭建成功后,一般会运行一个小例子,这时候就涉及到了对HDFS文件系统的操作,对于刚开始学习Hadoop的初学者一般会多次的进行name节点的格式化操作,最后导致上传文件会抛出异常,通过 ...
- 在bootstrap modal 中加载百度地图的信息窗口失效解决方法
这个问题其实很傻,解决方法没有任何技术含量,只是记录下工作中发生的事. 前阵子给一个汽车集团客户做了一个经销商查询系统,其中一个功能是使用地图标注经销商店面地址,并且实现导航功能. 页面演示地址:ht ...
- 在VS中使用Boost库出现Macro redefinition错误的解决方法(warning C4005)
最近使用Boost库做多线程开发,可视在vs中编译工程师总是遇到Macro redefinition错误,类似下面的错误描述 1>c:\program files (x86)\microsoft ...
- Struts2中There is no Action mapped for namespace错误解决方法
1.我的原有配置 jsp表单提交路径 <form class="layui-form" id="form" action="${ctx }/me ...
随机推荐
- GNU Linux启动时文件系统mountall挂载出错问题的处理
/********************************************************************* * Author : Samson * Date ...
- php代码审计之命令执行中windows/linux的差异化问题
昨天好基友发来了一段代码,还是挺有趣的,记录下: <?php $a = '\''.str_replace("'","\'",$_GET[1]).'\''; ...
- RMAN-20208: UNTIL CHANGE is before RESETLOGS change
执行recover操作时: RMAN> recover database; Starting recover at 28-NOV-19 using channel ORA_DISK_1 ...
- 201871030136-颜静 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu- ...
- ADAS系统长篇综述(下)
ADAS系统长篇综述(下) 四.ADAS架构设计的进化阶梯 前面谈到的产品的商业化推广渗透和产品的功能演进渗透,目的是让大家去概念化.当然,最后的赢家一定是实干者,能够在具体技术实现路径上进行深度耕耘 ...
- Usb-type-C端口实现的挑战与设计方案
Usb-type-C端口实现的挑战与设计方案 USB Type-C port implementation challenges and design solutions USB from 1.1 t ...
- CENTOS7 安装 SYNCTHING
本地电脑需要同步远程数据,安装syncthing 测试 1:下载 wget https://github.com/syncthing/syncthing/releases/download/v1.5. ...
- [Azure DevOps] 编译时自动修改版本号
1. 需求 在使用 Pipeline 自动化 CI/CD 流程的过程中,我还还需要自动修改程序集的版本号.这个功能 EdiWang 和LeoLaw 都写文章讲解过做法.不过我的项目基本都是 .Net ...
- Java语言中的这些知识点有没有用过,工作中有没有入过这些坑?
在Java语言中,有一些相对生僻的知识,平时用的机会可能不是很多,但如果不了解不掌握这些知识点的话,也可能会掉入陷阱之中,今天我们就来初步梳理一下: 1. goto是java语言中的关键字. &quo ...
- docker0-常用命令-持续更新
问君哪得清如许,为有源头活水来 1,帮助命令 docker version docker info docker 命令 --help 2,仓库\镜像 docker images 查看所有本地镜像 do ...