Ext.FromPanel的bug, 相信你们很多人可能会碰到

当移除一个FormPanel上的Item时, 再调用FormPanel的doLayout(), 会抛异常;

演示代码:
var text = new Ext.form.TextField({});

var form = new Ext.FormPanel({
    // ...若干代码省略...
    items: [text]
});

form.remove(text);
form.doLayout();


咱们来看看这个异常是怎么产生的.

有个Ext.form.MessageTargets类, 这个类的代码在/src/widgets/form/Field.js里面, 主要是用来处理Field类validate的错误信息提示;

当FromPanel设置msgTarget=='side'时, Field会往父容器注册一个afterlayout事件监听
if (field.ownerCt) {
     field.ownerCt.on('afterlayout', field.alignErrorIcon, field);
     field.ownerCt.on('expand', field.alignErrorIcon, field);
}


当Field对象被销毁之后, 如果一旦触发了afterlayout或expand事件, 那么会就抛异常"field.alignErrorIcon is not a function";

你可能感兴趣的:(ext)