Vue可以直接用html进行获取,利用v-model绑定html
Vue3用这个值,valueHtml的值
在onChange事件中添加
<template> <div style="border: 1px solid #ccc"> <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" /> <Editor style="height: 500px; overflow-y: hidden;" v-model="valueHtml" :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" /> </div> </template> <script> import '@wangeditor/editor/dist/css/style.css' // 引入 css import { onBeforeUnmount, ref, shallowRef, onMounted } from 'vue' import { Editor, Toolbar } from '@wangeditor/editor-for-vue' export default { components: { Editor, Toolbar }, setup() { // 编辑器实例,必须用 shallowRef const editorRef = shallowRef() // 内容 HTML const valueHtml = ref('<p>hello</p>') // 模拟 ajax 异步获取内容 onMounted(() => { setTimeout(() => { valueHtml.value = '<p>模拟 Ajax 异步设置内容</p>' }, 1500) }) const toolbarConfig = {} const editorConfig = { placeholder: '请输入内容...' } editorConfig.onChange = (editor) => { console.log('content', editor.children) console.log('html', editor.getHtml) } // 组件销毁时,也及时销毁编辑器 onBeforeUnmount(() => { const editor = editorRef.value if (editor == null) return editor.destroy() }) const handleCreated = (editor) => { editorRef.value = editor // 记录 editor 实例,重要! } return { editorRef, valueHtml, mode: 'default', // 或 'simple' toolbarConfig, editorConfig, handleCreated }; } } </script>
这里使用wangEditor,想要实现同步展示该怎样写
获取内容,我们在获取编辑器的时候
console同步展示怎样写:
console.log('content',editor.children)
console.log('html',editor.getHtml)
Vue可以用v-model获取内容,利用v-model绑定内容
怎样添加,首先在Editor中添添加资料
<template> <div style="border: 1px solid #ccc"> <Toolbar ... /> <Editor @onCreated="handleCreated" @onChange="handleChange" @onDestroyed="handleDestroyed" @onFocus="handleFocus" @onBlur="handleBlur" @customAlert="customAlert" @customPaste="customPaste" /> </div> </template>
资料链接:
const handleCreated = (editor) => { editorRef.value = editor console.log('created', editor) } const handleChange = (editor) => { console.log('change:', editor.children) } const handleDestroyed = (editor) => { console.log('destroyed', editor) } const handleFocus = (editor) => { console.log('focus', editor) } const handleBlur = (editor) => { console.log('blur', editor) } const customAlert = (info, type) => { alert(`【自定义提示】${type} - ${info}`) } const customPaste = (editor, event, callback) => { console.log('ClipboardEvent 粘贴事件对象', event) // const html = event.clipboardData.getData('text/html') // 获取粘贴的 html // const text = event.clipboardData.getData('text/plain') // 获取粘贴的纯文本 // const rtf = event.clipboardData.getData('text/rtf') // 获取 rtf 数据(如从 word wsp 复制粘贴) // 自定义插入内容 editor.insertText('xxx') // 返回 false ,阻止默认粘贴行为 event.preventDefault() callback(false) // 返回值(注意,vue 事件的返回值,不能用 return) // 返回 true ,继续默认的粘贴行为 // callback(true) } return { // 省略其他 ... handleCreated, handleChange, handleDestroyed, handleFocus, handleBlur, customAlert, customPaste }
用editor.getHtml就可以得到数据
我们可以把一些有内容的东西放在这里面
获取时候,在onchange这个地方,来获取
通过HTML来获取内容
使用editor.children获取JSON内容
动态设置HTML
设置JSON就行
异步获取内容之后,我们可以异步设置内容