在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:无法读取未定义的属性'名称'”,因为该复选框的dom元素已被删除。
注意我已经尝试过:
subpanel.destroy();
subpanel.remove(true);
subpanel.removeAll(true);
我的问题是:
我如何确保getFieldValues不包括被破坏的物品?要么
我如何才能真正完全移除面板(即实际上将其销毁)
编辑:
我已经通过拥有自己的formIsValid方法来修复了猴子补丁:
formIsValid: function() {
var valid = true;
this.items.each(function(f){
if (!f.isDestroyed) {
if(!f.validate()){
valid = false;
}
}
});
return valid;
}
但是,我认为isDestroyed方法是不必要的,因此如果我能够真正销毁该组件,那会更好
最佳答案
那是您应该在窗体面板中调用的remove
,其中子面板作为参数:
formPanel.remove(subPanel, true);