2016-02-05 13 views
5

Tôi đang sử dụng chức năng tiện ích con của CKEditor để tạo tiện ích con của riêng mình với thành phần jquery ở đó. Tuy nhiên khi các widget được kéo và thả nó bị phá hủy và tất cả các trạng thái trong thành phần jquery bị mất. Hành vi này có thể tránh được không? Nó có thể cấu hình được không? Tại sao nó được yêu cầu (có thể nhóm CKEditor có thể trả lời câu hỏi này)?CKEditor hủy tiện ích con khi kéo và thả

Trả lời

8

Đúng là tiện ích bị hủy (và được khởi tạo lại) trong khi kéo và thả, hành vi này không thể tránh được.

Làm cách nào để liên kết thành phần jQuery của bạn với đối tượng widget? Định nghĩa widget của bạn trông như thế nào? (Đó là đối tượng mà bạn vượt qua trong cuộc gọi editor.widgets.add()). Bạn có sử dụng Widget.setData()/Làm cách nào để bạn đặt thành phần jQuery này làm dữ liệu widget?

Nếu khó trả lời những câu hỏi này, bạn có thể chỉ cần sao chép dán mã nguồn của phiên bản tiện ích con của bạn (mở công cụ nhà phát triển của trình duyệt và tìm kiếm phần tử có thuộc tính data-cke-widget-id - không nhầm lẫn với chế độ xem nguồn trong CKEditor). Dán nó với toàn bộ nội dung.

Tiện ích lưu trữ dữ liệu của chúng trong thuộc tính HTML data-cke-widget-data. Một dự đoán mù sẽ là bạn hoặc không đặt dữ liệu chính xác trên widget hoặc khi nó được xâu chuỗi và sau đó phân tích cú pháp lại, nó không xử lý đối tượng jQuery đúng cách. Có lẽ bạn có thể khởi tạo thành phần jQuery của mình bằng cách sử dụng widget.definition.init và giữ dữ liệu dưới dạng đối tượng đơn giản (Widget.setData)?

Bạn cũng có thể muốn xem CKEditor widget documentation để biết thêm thông tin.

+0

Vì vậy, nói chung tôi phải lưu trữ trạng thái hiện tại bằng cách sử dụng setData để tôi có thể khôi phục trạng thái hiện tại sau khi giải trí khi tiện ích được kéo và thả, phải không? –

+1

Có, 'Widget.setData' sẽ lưu mọi thứ bên trong thuộc tính' data-cke-widget-data' của phần tử widget và nó sẽ có sẵn ngay cả sau khi phá hủy widget. – Comandeer

+0

Tôi có thể làm gì nếu tiện ích con phức tạp hơn (tức là cây jquery có các nút có thể được mở rộng bởi người dùng. Trong trường hợp này khi widget là DnD tôi phải tạo lại toàn bộ cây)? –

Các vấn đề liên quan