Javascript 如何实际销毁ExtJS中的组件?
在ExtJS FormPanel中,我使用以下方法动态添加其他面板:Javascript 如何实际销毁ExtJS中的组件?,javascript,extjs,destroy,formfield,Javascript,Extjs,Destroy,Formfield,在ExtJS FormPanel中,我使用以下方法动态添加其他面板: var sub_panel=新的子面板({variable:params}); var form_panel.items.first(); 表格面板。插入(3,子面板); 当我加载特定子面板并调用destroy时,它仍然存在于表单中,因此如果我调用: form_panel.getForm().getFieldValues(); 即使已将isDestroyed属性设置为true,本应删除的字段仍将返回 这会导致我的一个复选框
var sub_panel=新的子面板({variable:params});
var form_panel.items.first();
表格面板。插入(3,子面板);
当我加载特定子面板并调用destroy时,它仍然存在于表单中,因此如果我调用:
form_panel.getForm().getFieldValues();
即使已将isDestroyed属性设置为true,本应删除的字段仍将返回
这会导致我的一个复选框抛出错误“TypeError:无法读取未定义的属性“name”,因为复选框的dom元素已被删除
注:我尝试过:
- 子面板销毁()李>
- 子面板移除(真)李>
- 子面板removeAll(真)李>
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);
您使用什么版本的ExtJS?在代码中,您创建了一个子面板,但不使用它?我不明白你的代码有什么问题……你能修复这行
var form_panel.items.first()吗代码>?你试过使用最新版本吗?@AndreiI抱歉,这是一个错误subpanel@EvenTrimboli:不幸的是,我们被限制使用ExtJS 3.6。升级到4.x需要在将代码更改为:form_panel.items.first().remove(sub_panel,true)后完全重写UIC;错误仍然存在。调用validate时,它仍然抛出错误:uncaughttypeerror:无法读取未定义的ext all debug.js的属性“value”?1384767897:4269 El.getValue