在ExtJS 4中卸载/解绑定记录的正确方法是什么?



我想允许用户在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);

相关内容

最新更新