![](/img/trans.png)
[英]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.