我想允许用户在ExtJS 4中创建新记录并从同一表单编辑现有记录。我正在使用ExtJS 4.0.7。
我很容易加载记录。
var form = Ext.ComponentQuery.query('#myForm');
form.loadRecord(record);
但如果我想重新开始,就没办法卸下它!至少,没有找到合适的方法。我已经研究了几个小时,甚至还查看了一些核心的Ext代码以获得答案。我能想出的最好的“卸载”记录是:
form._record = null;
如果我没有明确声明_record
为null
,Ext将始终尝试更新存储在那里的记录。 form.reset();
也不会清除加载的记录。
是否有“正确”的方法来清除与表单相关联的记录,以便保存新记录?
答案 0 :(得分:4)
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;
时做得对
就个人而言,我更愿意做delete form._record
,但你的方法也应该有效。
答案 1 :(得分:2)
double
方法的可选第一个参数为true的docs describe取消绑定loadRecord设置的任何记录。所以在Ext 4和5中你可以做到:
reset
内部确实:
yourForm.reset(true);
答案 2 :(得分:0)
我会尝试制作一个空白记录并加载它以清除表格和记录。
var blankRecord = Ext.create('YourModel');
yourForm.loadRecord(blankRecord);