我有一个带有按钮的表,用于添加新元素,另一个用于编辑元素。这些操作共享相同的形式,唯一的区别是在编辑模式下表单已填充。当用户点击按钮时,会显示一个带有表单的新窗口。
第一次单击按钮,例如,添加新元素,工作正常。表格显示。但是......如果我关闭窗口并尝试编辑用户,则会显示一个没有内容的错误窗口,并显示错误“TypeError:b为null”是否存在表单定义问题?也许用窗口删除表单istance?
我在var:
中定义了一个表单var formPanel = Ext.create('Ext.form.Panel',{
extend: 'Ext.form.Panel',
id: 'policyForm',
...
我在网格的tbar中有一个按钮来显示窗口,以便添加用户和行中的另一个按钮来编辑他。这是按钮的处理程序:
handler : function(){
Ext.create('Ext.window.Window',{
layout: 'fit',
title: 'New Policy',
items: [formPanel],
width: 650,
height: 500,
id: 'myPolicyWindow'
}).show();
}
答案 0 :(得分:2)
您在Panel和Window代码中设置的id
很可能导致您无法在不同的窗口中重复使用相同的表单。您应该尽量避免在Ext组件上使用id
属性,它可能会导致类似这样的问题,因为ID应该是唯一的。将itemId
属性与Ext.ComponentQuery
结合使用,可以在不使用Ext.getCmp(compId)
的情况下获取对组件的引用。
答案 1 :(得分:1)
我同意你不应该使用ID。但是,实际问题可能是您怀疑的:表单的实例正在被破坏。这是因为closeAction
的默认Ext.window.Window
是" destroy",这也将消除所有子组件。将closeAction
更改为"隐藏",或者创建表单面板的新实例以及窗口的新实例。