繁体   English   中英

从ExtJS 4中的表单中卸载/取消记录的正确方法是什么?

[英]What is the proper way to unload/unbind a record from a form in ExtJS 4?

我想允许用户在ExtJS 4中从同一表单创建新记录并编辑现有记录。我正在使用ExtJS 4.0.7。

对我来说,加载记录很容易。

var form = Ext.ComponentQuery.query('#myForm');
form.loadRecord(record);

但是,如果我想重新开始,就无法卸载它! 至少,我找不到正确的方法。 我已经研究了几个小时,甚至还研究了一些Ext核心代码来寻找答案。 我想出的最好的“卸载”记录是:

form._record = null;

如果我没有明确声明_recordnull ,则Ext将始终尝试更新存储在该处的记录。 form.reset(); 也不会清除加载的记录。

有没有一种“适当的”方法来清除与表格相关的记录,以便可以保存新记录?

Ext.form.Panel派生自Ext.form.Basic ,其中_record作为私有变量存在。 如果您查看Ext.form.Basic http://docs.sencha.com/ext-js/4-0/source/Basic.html#Ext-form-Basic-method-getRecord的代码,请注意,对于_record没有明确的方法。 reset方法只需重置表单字段即可。 因此,在设置form._record = null;时您做对了form._record = null; 就个人而言,我希望delete form._record ,但是您的方法也应该可行。

文档描述reset方法的可选的first参数为true会解除绑定loadRecord设置的任何记录。 因此,在Ext 4和Ext 5中,您可以执行以下操作:

yourForm.reset(true);

在内部,它可以:

delete me._record;

我将尝试制作空白记录并加载该记录以清除表单和记录。

var blankRecord = Ext.create('YourModel');
yourForm.loadRecord(blankRecord);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM