[英]What is the proper way to unbind event listeners and remove child elements in single page applications?
[英]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;
如果我没有明确声明_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;
时您做对了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.