如何实际销毁ExtJS中的组件
How to actually destroy components in ExtJS?
在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元素已被删除。
注意:我已经尝试过:
- 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);
相关文章:
- 如何使ExtJS网格面板成为真正的只读组件
- 用任意html替换ExtJS组件的内容
- 在 ExtJS 中获取父组件
- ExtJS中的浮动组件
- ExtJS 4.1.它们是创建侧边栏菜单的最佳组件(如左面板中的Worpress)
- 关于在extjs窗口组件中检测拖动
- 点击tpl链接时,ExtJS 4.2自定义组件触发事件
- 如何更改ExtJS组件's renderTpl之后's已初始化
- Extjs 4,事件处理,范围,自定义组件
- 如何实际销毁ExtJS中的组件
- 使用 Ext.create 在 ExtJS 4 GridPanel Column 中渲染动态组件
- ExtJS 无法为时域组件设置值
- ExtJs - 如何在使用多个实例时设置组件的 ID
- ExtJs 扩展组件问题
- 如何在 ExtJS 6 中使用 UX 组件
- 如何扩展 ExtJs 组件
- 为什么 ExtJS 组件不能在自身上调用 markInvalid()
- 在 ExtJS 组件中显示富文本
- 在网格单元中绘制组件-extjs 4
- 自定义组件ExtJS,而不是工作setValue