创建wangEditor.vue文件。
<template>
<div style="border: 1px solid #ccc">
<!-- 工具栏 -->
<!-- :defaultConfig="toolbarConfig" -->
<Toolbar
:editor="editorRef"
style="border-bottom: 1px solid #ccc"
/>
<!-- 编辑器 -->
<Editor
v-model="valueHtml"
:defaultConfig="editorConfig"
:style="`height:${props.height}px;overflow-y: hidden;`"
@onCreated="handleCreated"
@onChange="handleChange"
/>
</div>
</template>
<script setup>
import { onBeforeUnmount, ref, shallowRef, onMounted ,defineProps,defineEmits} from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
const props = defineProps({
height:{
type:String,
default:'400'
},
data:{
type:String,
default:'<p>模拟 Ajax 异步设置内容</p>'
}
})
const emit = defineEmits(['valueHtmlChange'])
// change事件,通知父页面事件
const handleChange = (editor) => {
emit('valueHtmlChange',valueHtml)
}
// 编辑器实例,必须用 shallowRef,重要!
const editorRef = shallowRef()
// 内容 HTML
const valueHtml = ref('<p>hello</p>')
// 模拟 ajax 异步获取内容
onMounted(() => {
setTimeout(() => {
valueHtml.value = props.data
}, 1500)
})
// 编辑器配置
const editorConfig = {
placeholder: '请输入内容...',
/* 菜单配置 */
MENU_CONF: { }
}
const handleCreated = (editor) => {
editorRef.value = editor // 记录 editor 实例,重要!
}
// 组件销毁时,及时销毁编辑器
onBeforeUnmount(() => {
const editor = editorRef.value
if (editor == null) return
editor.destroy()
})
</script>
记得引入css。
<style src="@wangeditor/editor/dist/css/style.css">
</style>
父页面调用:
<template>
<div>
<WangEditor height="500" @valueHtmlChange="valueHtmlChange"></WangEditor>
</div>
</template>
<script setup>
import WangEditor from '../../components/wangEditor.vue';
const valueHtmlChange = (val)=>{
console.log(val)
}
</script>