2011-11-03 10 views
5

Chcę umożliwić użytkownikom tworzenie nowych rekordów i edytowanie istniejących rekordów z tego samego formularza w ExtJS 4. Pracuję z ExtJS 4.0.7.Jaki jest właściwy sposób usuwania/rozłączania rekordu z formularza w ExtJS 4?

Załadowanie płyty jest dla mnie łatwe.

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

Ale jeśli chcę zacząć od nowa, nie ma sposobu, aby ją wyładować! Przynajmniej nie ma właściwego sposobu, który mogę znaleźć. Badałem już od wielu godzin, a nawet przejrzałem część podstawowego kodu Ext, aby uzyskać odpowiedź. Najlepsze co mogłem wymyślić, aby „rozładować” zapis brzmi:

form._record = null; 

Jeśli nie jawnie zadeklarować _record jak null, Ext zawsze będą próbować zaktualizować rekord zapisany tam. form.reset(); nie czyści również załadowanego rekordu.

Czy istnieje "właściwy" sposób, aby usunąć zapis związany z formularzem, aby nowy zapis mógł zostać zapisany?

Odpowiedz

4

Ext.form.Panel pochodzi z Ext.form.Basic, gdzie _record istnieje jako zmienna prywatna. A jeśli zajrzysz do kodu , zauważysz, że nie ma jasnej metody dla _record. reset Metoda wystarczy zresetować pola formularza. Robisz to dobrze, ustawiając form._record = null; Osobiście wolałbym zrobić delete form._record, ale twoje podejście powinno również działać.

0

Chciałbym spróbować zrobić pustą płytę i załadować ją, aby wyczyścić formularz i nagrać.

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

docs describe, że reset metody badaniem opcjonalnie pierwszy parametr na true usuwa powiązanie dowolny rekord ustanowiony przez loadRecord. Więc w EXT 4 i 5 można po prostu zrobić:

yourForm.reset(true); 

Wewnętrznie robi:

delete me._record; 
Powiązane problemy