【发布时间】:2020-05-08 00:18:53
【问题描述】:
我想用 vue 创建简单的所见即所得编辑器。我发现只有一个在 vue.js 上创建的真正的所见即所得编辑器。这里是 __https://quasar.dev/vue-components/editor (但我没有找到插入图像的能力)。其他 vue 所见即所得编辑器只是对 tinymce 或 ckeditor 等的包装。
我计划使用来自 mozilla 开发者网站的示例中的基本命令创建简单的 vue 编辑器。这里是https://codepen.io/chrisdavidmills/pen/gzYjag。
首先我想知道如何将vue组件插入到contenteditable div中。我的意思是?例如,我想创建编辑器插件,它将在工具栏图标单击时插入图像。插入的图像应该带有附加事件(点击事件),它可以调整大小等。我在https://stackoverflow.com/a/59326255/1581741 的回答中找到了这个基本想法,(作者@AJT82)。他给了我将 vue-component (image) 插入 contenteditable div 的示例。这里是https://codesandbox.io/s/vue-template-m1ypk。
那么,我有下一个问题。
用户打开空编辑器并将组件插入其中。我需要一些东西来存储到数据库。
1) 我到底应该将什么存储到数据库中?
2) 带有图像的存储文本应在站点的某处呈现为仅供查看的文章。这意味着我应该已经生成了 html(例如,<img src="" />)。我将如何从插入的 vue 组件中获取它?
3) 用户可以从编辑器中编辑存储的早期代码。如何再次插入(之前插入并存储到数据库)vue-component?
我迷失在这个问题上。
【问题讨论】:
-
Editor.js editorjs.io/base-concepts 的一个有用概念。
-
@User28 ,我去看看。将该对象存储到数据库中看起来是个好主意。也许这是我的问题 №1 的答案。
-
但我仍然不知道如何从 contenteditable div 和所有插入的组件中获取此类对象。
-
首先你要定义你的json,有多少种blocks?对于每个块,您必须呈现的数据是什么?例如段落块可能有一个文本属性,图像块可能有 src 属性、样式等。然后你找到将 json 解析为 div 并添加侦听器以将数据更新回 json 的方法。
-
另一个想法draftjs.org/docs/getting-started。您应该观看视频。