1创建富文本
<template> <div style="border: 1px solid #ccc"> <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" mode="defofault" /> <Editor style="height: 500px; overflow-y: hidden" v-model="form.eva" :defaultConfig="editorConfig" mode="default " @onCreated="handleCreated" /> </div> </template> import '@wangeditor/editor/dist/css/style.css'; // 引入 css import { onBeforeUnmount, shallowRef, onMounted } from 'vue'; import { Editor, Toolbar } from '@wangeditor/editor-for-vue';
2配置富文本‘
const imUr = ref(''); // 编辑器实例,必须用 shallowRef const editorRef = shallowRef(); // 内容 HTML const valueHtml = ref(); //功能区 const toolbarConfig = {}; const editorConfig = { placeholder: '请输入内容...', } // 组件销毁时,也及时销毁编辑器 onBeforeUnmount(() => { const editor = editorRef.value; if (editor == null) return; editor.destroy(); }); const handleCreated = (editor) => { editorRef.value = editor; // 记录 editor 实例,重要! };
3.添加自定义上传
//在editorConfig 添加 const editorConfig = { placeholder: '请输入内容...', MENU_CONF: { uploadImage: { async customUpload(file, insertFn) { console.log(file); const forms = new FormData(); forms.append("参数", file); // 获取上传图片信息 // 请求接口 axios .post("上传接口", forms, { headers: { "content-type": "multipart/form-data", }, }) .then((res) => { console.log(res); imUr.value = res.data.front_file if (res.data.status == 200) { console.log(res); } // file 即选中的文件 // 自己实现上传,并得到图片 url alt href // 最后插入图片 insertFn( 'http//'+imUr.value , alt, href) }); }, } }, }
注意:打开和关闭表单时可能会出现富文本销毁失效报错
解决:在富文本中添加v-if,在打开或关闭表单事件中添加相应状态
<div style="border: 1px solid #ccc" v-if="text"> <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" mode="defofault" /> <Editor style="height: 500px; overflow-y: hidden" v-model="form.eva" :defaultConfig="editorConfig" mode="default " @onCreated="handleCreated" /> </div> const text=ref()
3