惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
罗磊的独立博客
J
Java Code Geeks
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
Jina AI
Jina AI
F
Fortinet All Blogs
H
Help Net Security
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Last Week in AI
Last Week in AI
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
C
Check Point Blog
GbyAI
GbyAI

博客园 - 菩提树

导出EXCEL数据时防止数值变科学计数的办法 EXTJS4的MVC的简单理解 ASP导出EXCEL乱码?试试这个 EXTJS记事本:当CompositeField遇上RowEditor 关注杂交应用程序 绕人的python汉字问题 - 菩提树 - 博客园 原创:嵌入图片的HTML内容在FLASH AS3中正确显示的最佳解决方案 关于用Combo.Setvalue初始化COMBO值的备忘 万能的回调 - 菩提树 - 博客园 EXTJS动态载入组件定义文件并初始化组件,动态构造界面的方法. ServerXmlHttp折腾死人了 补充:ASP Json Parser修正版 不完整的CSS样式文件会让Dreamweaver崩溃 注意检查你代码中的逗号 EXTJS中设置ComboBox的值 - 菩提树 - 博客园 EXTJS:拖动对行进行排序 将Json字符串转换为ASP对象(parse json string to asp object) 一句简单的SQL语句,找出表中某个字段的重复值 ExtJS Formpanel事件处理的标准写法
EXTJS框架中由于ID重复引起的各种异常的解决方法
菩提树 · 2011-06-24 · via 博客园 - 菩提树

很多人使用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重复问题