是否可以在Extjs4中的两个不同窗口中使用相同的表单?

时间:2013-07-01 12:16:36

标签: extjs extjs4 extjs4.2

我有一个带有按钮的表,用于添加新元素,另一个用于编辑元素。这些操作共享相同的形式,唯一的区别是在编辑模式下表单已填充。当用户点击按钮时,会显示一个带有表单的新窗口。

第一次单击按钮,例如,添加新元素,工作正常。表格显示。但是......如果我关闭窗口并尝试编辑用户,则会显示一个没有内容的错误窗口,并显示错误“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();
}

2 个答案:

答案 0 :(得分:2)

您在Panel和Window代码中设置的id很可能导致您无法在不同的窗口中重复使用相同的表单。您应该尽量避免在Ext组件上使用id属性,它可能会导致类似这样的问题,因为ID应该是唯一的。将itemId属性与Ext.ComponentQuery结合使用,可以在不使用Ext.getCmp(compId)的情况下获取对组件的引用。

答案 1 :(得分:1)

我同意你不应该使用ID。但是,实际问题可能是您怀疑的:表单的实例正在被破坏。这是因为closeAction的默认Ext.window.Window是" destroy",这也将消除所有子组件。将closeAction更改为"隐藏",或者创建表单面板的新实例以及窗口的新实例。