extjs框架中由于id导致的各种异常,比如组件中文字重叠等问题,如图:
而且确认密码是否一致功能也失效,主要原因是Ext.getCmp(‘id’),在组件关闭时并未销毁导致(EXTJS基本上是靠ID来识别组件的,假如你在panel1中有个ID:"keyword"的textfield,而panel2中有个ID相同的textfield ,那么,当你关闭panel2,由于extjs发现panel2中的ID:"keyword"组件在panel1中仍然使用中,是不会销毁掉它的,于是它成为一个孤立的对象,从而造成混乱。)
网上查找解决办法:
1. 如果必须使用ID属性,建议ID值用父组件ID+子组件ID的形式来指定子组件的ID;
2. 建议使用
FormPanel.getForm().findField('id/name');
或者
Ext.get('id/name');
来替代
Ext.getCmp('id')获取组件。
3. 或者定义组件为变量,然后在FormPanel或者GridPanel中引入。
4.不给对象指定ID,然后使用组件的find方法通过其他属性来查找对象,例如find("name","role"),结果产生一个array,当然,你的属性是唯一的,那你就可以用find("name","role")[0]这种形式引用组件。
本人使用方法3实现。。。其他办法试过,好像出错或者无效!