Tôi đang phát triển một ứng dụng web bằng cách sử dụng ExtJS để xây dựng GUI và giao tiếp với máy chủ thông qua dịch vụ web RESTful (dữ liệu trả về được định dạng là các đối tượng JSON).
Bây giờ tôi gặp sự cố khi xử lý dữ liệu chứa thẻ HTML, mã Javascript bên trong; bởi vì khi tôi đặt những giá trị đó thành dạng Ext, label, input fields, chúng bị ảnh hưởng bởi những cú pháp đó.
tôi đã sử dụng chức năng này để tải dữ liệu từ đối tượng mô hình mẫu:Cách tốt nhất để thoát HTML trên ứng dụng ExtJS nói chung là gì?
form.loadRecord(model);
Tôi đã tìm thấy một giải pháp để thoát khỏi HTML và JS: sử dụng
field.setValue(Ext.util.Format.htmlDecode(data));
nhưng tôi nghĩ đó không phải là một giải pháp tốt cho toàn bộ ứng dụng, bởi vì các nhà phát triển phải làm rất nhiều thứ: xem xét tất cả các trường nhập, nhãn và đặt đoạn mã đó vào chúng. Và sau tất cả, đó không phải là một cách hay để xây dựng một ứng dụng nhanh, mạnh mẽ và dễ bảo trì.
Vì vậy, bạn có thể vui lòng giúp tôi giải pháp để nó có thể được sửa đổi tại một nơi và ảnh hưởng đến phần còn lại hay không. Tôi có thể ghi đè setValue/setLabel của AbstractComponent không? Hoặc tôi nên mã hóa dữ liệu trước khi hiển thị chúng? Và làm thế nào để giải mã những dữ liệu đó? (P/S: Tôi sử dụng khung Grails ở phía máy chủ) Cảm ơn bạn rất nhiều.
Dường như giải pháp trên phá vỡ trường ngày, ít nhất là trong ExtJS 4.2. Một cải tiến nhỏ sẽ là kiểm tra xem giá trị có phải là chuỗi trước khi cố gắng giải mã HTML hay không. Vì vậy, như thế này: \t setValue: function (val) { \t \t if (typeof val == 'string') { \t \t \t val = Ext.util.Format.htmlDecode (val); \t \t} \t \t trả lại this.callParent ([val]); \t} – Rocket04