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

时间:2011-11-03 19:55:14

标签: javascript extjs extjs4

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

我很容易加载记录。

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

但如果我想重新开始,就没办法卸下它!至少,没有找到合适的方法。我已经研究了几个小时,甚至还查看了一些核心的Ext代码以获得答案。我能想出的最好的“卸载”记录是:

form._record = null;

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

是否有“正确”的方法来清除与表单相关联的记录,以便保存新记录?

3 个答案:

答案 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);