Как правильно выгрузить / открепить запись из формы в ExtJS 4? - PullRequest
5 голосов
/ 03 ноября 2011

Я хочу разрешить пользователям создавать новые записи и редактировать существующие записи из той же формы в ExtJS 4. Я работаю с ExtJS 4.0.7.

Мне легко загрузить запись.

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

Но если я захочу начать с нуля, нет возможности его разгрузить! По крайней мере, я не могу найти подходящий способ. Я уже часами искал и даже посмотрел какой-то основной код Ext для ответа. Лучшее, что я мог придумать, чтобы «разгрузить» запись:

form._record = null;

Если я явно не объявлю _record как null, Ext всегда будет пытаться обновить сохраненную там запись. form.reset(); также не очищает загруженную запись.

Существует ли "правильный" способ очистки записи, связанной с формой, чтобы можно было сохранить новую запись?

Ответы [ 3 ]

4 голосов
/ 04 ноября 2011

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, но ваш подход должен работать либо.

2 голосов
/ 17 августа 2015

Документы описывают , что необязательный первый параметр метода reset для true отменяет привязку любой записи, установленной loadRecord. Так что в Ext 4 и 5 вы можете просто сделать:

yourForm.reset(true);

Внутренне это делает:

delete me._record;
0 голосов
/ 14 ноября 2013

Я бы попробовал сделать пустую запись и загрузить ее, чтобы очистить форму и запись.

var blankRecord = Ext.create('YourModel');
yourForm.loadRecord(blankRecord);
...