在ExtJS FormPanel内部,我使用以下方法动态添加其他面板:
var sub_panel = new SubPanel({various: params});
var form_panel.items.first();
form_panel.insert(3, sub_panel);
当我加载特定的子面板并在其上调用destroy时,它仍然存在于表单中,以便在我调用时:
form_panel.getForm().getFieldValues();
即使将isDestroyed属性设置为true,本应删除的字段仍会返回。
这导致我的一个复选框抛出错误“TypeError:无法读取未定义的属性'name',因为复选框的dom元素已被删除。
注意我试过了:
我的问题是:
编辑:
我已经设法通过拥有自己的formIsValid方法来修复monkeypatch:
formIsValid: function() {
var valid = true;
this.items.each(function(f){
if (!f.isDestroyed) {
if(!f.validate()){
valid = false;
}
}
});
return valid;
}
isDestroyed方法然而我认为应该是不必要的,所以如果我能够真正销毁组件会更好
答案 0 :(得分:2)
这是来自表单面板,你应该调用remove
,子面板作为参数:
formPanel.remove(subPanel, true);