CKEditor在拖放时销毁小部件

CKEditor在拖放时销毁小部件,ckeditor,Ckeditor,我正在使用CKEditor的小部件功能创建我自己的带有jquery组件的小部件。但是,当小部件被拖放时,它会被销毁,jquery组件中的所有状态都会丢失。 这种行为可以避免吗?它是可配置的吗?为什么需要它(也许CKEditor团队可以回答这个问题)?的确,在拖放过程中,小部件被销毁(并重新初始化),这种行为是无法避免的 如何将jQuery组件与小部件对象链接?您的小部件定义是什么样的?(它是您在编辑器.widgets.add()调用中传递的对象)。您是否使用Widget.setData()/如何

我正在使用CKEditor的小部件功能创建我自己的带有jquery组件的小部件。但是,当小部件被拖放时,它会被销毁,jquery组件中的所有状态都会丢失。
这种行为可以避免吗?它是可配置的吗?为什么需要它(也许CKEditor团队可以回答这个问题)?

的确,在拖放过程中,小部件被销毁(并重新初始化),这种行为是无法避免的

如何将jQuery组件与小部件对象链接?您的小部件定义是什么样的?(它是您在
编辑器.widgets.add()调用中传递的对象)。您是否使用Widget.setData()
/如何将此jQuery组件设置为Widget数据

如果您很难回答这些问题,您可以将小部件实例的源代码复制粘贴到此处(打开浏览器的开发人员工具,查找带有
数据cke小部件id
属性的元素-不要与CKEditor中的源代码模式视图混淆)。将其与整个内容粘贴在一起

小部件将其数据存储在
数据cke小部件数据
HTML属性中。盲目猜测可能是您没有在小部件上正确设置数据,或者当它被字符串化并解析回来时,它没有正确处理jQuery对象。也许您可以使用
widget.definition.init
初始化jQuery组件,并将数据作为普通对象(
widget.setData
)保存


您可能还想查看更多信息。

因此,一般情况下,我必须使用setData存储当前状态,以便在拖放小部件时,在重新创建后可以正确恢复它,对吗?是,
Widget.setData
应该保存Widget元素的
data-cke-Widget-data
属性中的所有内容,并且即使在销毁Widget后也应该可用。如果Widget是更复杂的东西,我该怎么办(即jquery树,其中包含用户可以扩展的节点。在这种情况下,当小部件为DnD时,我必须重新创建整个树)?也许您可以将数据存储在其他地方(全局控制器或其他东西),并只保留某种引用它的令牌?