我有一个要添加到主 TabPanel 的 Ext Js 面板。我添加的面板包含一个 FormPanel 作为它的项目之一,并且在 FormPanel 中我有一个 Name 字段。我想要做的是根据表单字段中的名称更改选项卡的名称。
问题是,如果我在面板的 initComponent 中调用 FormPanel 的 getForm().getValues()
,我会收到以下 javascript 错误:
Uncaught TypeError: Cannot read property 'dom' of undefined
如果我在 initComponent 之外执行此操作(例如按下按钮),一切正常。在做了一些测试之后,我认为问题在于 FormPanel 尚未实际呈现(因此 dom 不存在),
getValues()
失败。但是,我似乎无法找到一种在加载时从面板获取我的 FormPanel 值的方法。我试图监听事件。我试过了:
this.detailForm.on('afterrender', function () { alert('test'); });
但这样做表明
AfterRender
在实际呈现表单之前被调用(它在屏幕上不可见)。将警报更改为我的自定义函数处理程序会产生之前的 dom 异常。我尝试使用 activate
和 enable
事件而不是 afterrender
,但即使 API 说 FormPanel 会触发这些事件, alert('test') 也永远不会被调用。我似乎找不到任何方法让我的面板在加载我的面板时获取内部 FormPanel 的值。有没有人有任何想法?
最佳答案
使用 getFieldValues() 代替 getValues() 将通过调用每个字段实例的 getValue() 方法而不是从 DOM 读取来收集值。无论表单的呈现状态如何,这都应该允许您获取您的值。
关于forms - 无法在容器面板初始化时在 Ext Js FormPanel 上调用 getValues(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4405413/