2011-11-03 25 views
5

Tôi muốn cho phép người dùng tạo bản ghi mới và chỉnh sửa các bản ghi hiện có từ cùng một biểu mẫu trong ExtJS 4. Tôi đang làm việc với ExtJS 4.0.7.Cách thích hợp để bỏ/hủy liên kết bản ghi từ biểu mẫu trong ExtJS 4 là gì?

Thật dễ dàng để tôi tải bản ghi.

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

Nhưng nếu tôi muốn bắt đầu mới, không có cách nào để tải xuống! Ít nhất, không có cách thích hợp mà tôi có thể tìm thấy. Tôi đã nghiên cứu hàng giờ đồng hồ, và thậm chí đã xem xét một số mã nguồn mở lõi cho một câu trả lời. Điều tốt nhất tôi có thể đưa ra để "dỡ bỏ" một kỷ lục là:

form._record = null; 

Nếu tôi không tuyên bố một cách rõ ràng _record như null, Ext sẽ luôn luôn cố gắng cập nhật các bản ghi lưu trữ ở đó. form.reset(); cũng không xóa bản ghi đã tải.

Có cách nào "thích hợp" để xóa bản ghi được gắn với biểu mẫu để có thể lưu bản ghi mới không?

Trả lời

4

Ext.form.Panel có nguồn gốc từ Ext.form.Basic, trong đó _record tồn tại dưới dạng biến riêng tư. Và nếu bạn xem xét mã của Ext.form.Basic http://docs.sencha.com/ext-js/4-0/source/Basic.html#Ext-form-Basic-method-getRecord bạn sẽ lưu ý rằng không có phương pháp rõ ràng cho _record. reset phương pháp chỉ cần thiết lập lại các trường biểu mẫu. Vì vậy, bạn đang làm đúng khi đặt form._record = null; Cá nhân, tôi muốn thực hiện delete form._record, nhưng cách tiếp cận của bạn cũng sẽ hoạt động.

0

Tôi sẽ thử tạo bản ghi trống và tải bản ghi đó để xóa biểu mẫu và ghi lại.

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

Các docs describe rằng tham số đầu tiên không bắt buộc các reset phương pháp của true unbinds bất cứ hồ sơ do loadRecord. Vì vậy, trong Ext 4 và 5 bạn chỉ có thể làm:

yourForm.reset(true); 

Bên trong nó:

delete me._record; 
Các vấn đề liên quan