我想允许用户在ExtJS 4中以相同的形式创建新记录和编辑现有记录。我正在使用ExtJS 4.0.7.
载入记录对我来说很容易。
var form = Ext.ComponentQuery.query('#myForm');
form.loadRecord(record);
但是如果我想重新开始,没有办法卸载它!至少,我找不到合适的方法。我已经研究了好几个小时,甚至为了找到答案,翻阅了一些核心Ext代码。我能想到的最好的"卸载"记录是:
form._record = null;
如果我没有显式地将_record
声明为null
, 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;
时做得对就我个人而言,我更喜欢做delete form._record
,但你的方法应该工作。
文档描述reset
方法的可选第一个参数true解除绑定loadRecord设置的任何记录。在Ext 4和Ext 5中你可以输入:
yourForm.reset(true);
内部:
delete me._record;
我会尝试创建一个空白记录并加载它以清除表单和记录。
var blankRecord = Ext.create('YourModel');
yourForm.loadRecord(blankRecord);