2016-02-05 14 views
5

私はCKEditorのウィジェット機能を使用してjqueryコンポーネントを持つ独自のウィジェットを作成しています。しかし、ウィジェットがドラッグアンドドロップされると、破棄され、jqueryコンポーネント内のすべての状態が失われます。 この現象を回避できますか?それは設定可能ですか?なぜそれが必要なのでしょうか(CKEditorチームがこれに答えるかもしれません)?CKEditorはドラッグアンドドロップ時にウィジェットを破棄します

答えて

8

ドラッグアンドドロップ中にウィジェットが破棄(および再初期化)された場合は、この動作を回避することはできません。

jQueryコンポーネントをウィジェットオブジェクトにリンクするにはどうすればよいですか?あなたのウィジェット定義はどのように見えますか? (それはあなたがeditor.widgets.add()コールで渡すオブジェクトです)。 Widget.setData()を使用していますか/このjQueryコンポーネントをウィジェットデータとして設定するにはどうすればよいですか?

これらの質問に答えることが難しい場合は、ウィジェットインスタンスのソースコードをここに貼り付けるだけです(ブラウザの開発者ツールを開き、data-cke-widget-id属性の要素を探します)。ソースモードビューと混同しないでくださいCKEditorで)。コンテンツ全体に貼り付けます。

ウィジェットは、データをdata-cke-widget-data HTML属性で保存します。ブラインド推測では、データをウィジェットに正しく設定しないか、文字列化してから解析してjQueryオブジェクトを適切に処理しない場合があります。おそらく、widget.definition.initを使用してjQueryコンポーネントを初期化し、データをプレーンオブジェクト(Widget.setData)にしておくことができますか?

さらに詳しい情報はCKEditor widget documentationをご覧ください。

+0

一般に、setDataを使用して現在の状態を保存する必要があるため、ウィジェットがドラッグアンドドロップされたときに再作成後に正しく復元できますか? –

+1

はい、 'Widget.setData'は、ウィジェットの要素の' data-cke-widget-data'属性の中にあるものすべてを保存する必要があり、ウィジェットを破棄した後でも利用可能でなければなりません。 – Comandeer

+0

ウィジェットがより複雑な場合(つまり、ユーザが展開できるノードを持つjqueryツリー、つまりウィジェットがDnDの場合、ツリー全体を再作成する必要がある場合)はどうすればよいですか? –

関連する問題