ExtJs 确定表单加载的可见性
Posted
技术标签:
【中文标题】ExtJs 确定表单加载的可见性【英文标题】:ExtJs determine visibility on form load 【发布时间】:2013-02-27 16:07:47 【问题描述】:在 Extjs 3.4 中,我有一个相当大的表单,它是通过 someForm.getForm().load(url: someplace, etc)
的 ajax 调用填充的,它运行良好。不过,我似乎无法解决的问题是,有几个组合框和复选框可以确定另一个字段是否可见以及allowBlank
。
根据类似问题的答案,我尝试在表单上使用 actioncomplete
事件,但此时字段没有值。我也尝试过使用load()
调用的success
事件,但遇到了同样的问题。
还有其他方法可以从form.load()
调用中获取此功能吗?
编辑 - 这是我的load
电话:
var panel = Ext.getCmp('someFormID');
panel.getForm().load(
method: 'GET',
url: 'ajax_get_request.aspx?id=' + id,
success: function (form)
// This will error: object is null or undefined
alert(form.findField('fieldID').getValue());
);
我对 Extjs 比较陌生,所以也许我只是在这里遗漏了一些东西......
【问题讨论】:
它抱怨哪个对象?form
还是从findField('fieldID')
返回?
在我看来,您使用的'fieldID'
可能不正确,因此未找到任何字段。
【参考方案1】:
不知道为什么挂钩到Ext.form.BasicForm.load()
的success
回调对您来说会失败,但我可以提出另一种方法。
我通常使用显式的Ext.Ajax.request()
调用将数据加载到Ext.data.Record
。然后在request()
的success
回调中,我使用Ext.form.BasicForm.loadRecord()
将数据加载到表单中。如果您需要对加载的值采取行动,您可以在同一个回调中执行。
我这样做是因为我喜欢将来自服务器的原始值存储在一边。
【讨论】:
我认为成功回调将是执行此操作的地方,但也许我的代码(请参阅编辑)设置不正确?我之前没有使用过Ext.data.Record
,所以我会调查一下。
好吧,我不知道为什么,但切换到使用字段名称而不是 ID 似乎可以正常工作。我真的不知道为什么,除非表单不喜欢在创建时将变量附加到 ID (id: 'somestring' + idVar,
)
没错。表单和任何其他 ExtJS 组件都不喜欢这样。 ID 在创建组件时在多个地方使用,之后更改它不会传播此更改。一旦组件启动并运行,最好不要管id
s。以上是关于ExtJs 确定表单加载的可见性的主要内容,如果未能解决你的问题,请参考以下文章