Extjs 如何检查面板是否包含表单?

Extjs 如何检查面板是否包含表单?,extjs,extjs4.2,Extjs,Extjs4.2,我有一堆面板,其中一个没有表格。在面板之间导航时,我需要检查form.isDirty()是否正确。很明显,只要我没有在没有表格的情况下击中面板,它就可以正常工作。这是一种卡片布局,我目前正在使用: Ext.getCmp('content-panel').getForm().isDirty() 在执行这一行之前,我需要检查面板是否有表单。是否可以在ExtJS4中执行此操作?找到了一个解决方法。以防其他人也在寻找同样的东西 我把我的陈述分成以下几部分 var formCmp=Ext.getCmp('

我有一堆面板,其中一个没有表格。在面板之间导航时,我需要检查form.isDirty()是否正确。很明显,只要我没有在没有表格的情况下击中面板,它就可以正常工作。这是一种卡片布局,我目前正在使用:

Ext.getCmp('content-panel').getForm().isDirty()


在执行这一行之前,我需要检查面板是否有表单。是否可以在ExtJS4中执行此操作?

找到了一个解决方法。以防其他人也在寻找同样的东西

我把我的陈述分成以下几部分

var formCmp=Ext.getCmp('content-panel');然后 称为formCmp.getForm


注意:getForm和getForm()返回不同的值。

此代码适用于需求,我们可以访问面板的“form”属性。如果面板包含表单,则此属性返回表单对象,如果面板不包含表单,则返回满足您需求的“undefined”

var formFlag = Ext.getCmp('content-panel').form;
if(formFlag  === undefined){
   console.log('form is absent');
}else{
   console.log('form is present');//formFlag is the form object in this case
}

组件查询应该帮助您检查面板中是否有表单,并且您必须检查面板是否是表单

var panel = Ext.getCmp('content-panel');
//Check if this is a form
var isForm = panel.form
//Check if an inner panel is a form
var hasForm = panel.query('form');
if(isForm && hasForm.length > 0){
  //Is or has a form
}

我相信getCmp是基于id检索组件的。下面是一篇非常好的文章,介绍了为什么使用itemId和其他实践可以更好地避免这种情况