2016-02-05 93 views
5

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

回答

8

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

你如何链接你的jQuery组件与widget对象?你的小部件定义是什么样的? (这是您通过editor.widgets.add()调用传递的对象)。你使用Widget.setData() /你如何将这个jQuery组件设置为窗口小部件数据?

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

小工具将其数据存储在data-cke-widget-dataHTML属性中。一个盲目的猜测是,你要么不在widget上正确设置数据,要么在字符串化后再解析,它不能正确处理jQuery对象。也许你可以使用widget.definition.init初始化你的jQuery组件并将数据保存为一个普通对象(Widget.setData)?

你可能也想看看CKEditor widget documentation了解更多信息。

+0

因此,一般来说,我必须使用setData存储当前状态,以便在重新创建后可以在小部件拖放时正确恢复它,对吗? –

+1

是的,'Widget.setData'应该将所有内容都保存在widget的data-cke-widget-data属性中,即使在销毁widget之后它也应该可用。 – Comandeer

+0

如果小部件是更复杂的东西(即用户可以扩展的节点的jquery树,那么当我的小部件是DnD时,我必须重新创建整个树),我该怎么办? –