富文本就是在后台管理系统中常见的录入带格式的内容,如:表格,字体加粗,斜体,文字颜色等等,就像一个word一样。类似于这样的效果:
我们使用通用在线编辑器tinymce。支持vue和react。
1. 安装
npm i @tinymce/tinymce-vue -S
要注意版本,我使用的是5.1.1。
2. 在vue组件里导入
import Editor from '@tinymce/tinymce-vue';
如果是选项式api的话,需要做组件注册。
3. 在模板上渲染
<Editor ref="editorref" :init="{plugins: 'wordcount'}" />
4. 操作富文本实例
editorref.value.getEditor()
5、获取内容【这是最关键的一步】
editorref.value.getEditor().getContent()
完整代码【使用element-plus和ts】:
<!-- 富文本 -->
<script lang="ts" setup>
import { ref } from "vue";
import Editor from '@tinymce/tinymce-vue'const content = ref();interface INews {title: string
}
const form = ref<INews>({title: ""
});
const editorRef = ref();const addNews = () => {let data = {title: form.value.title,content: editorRef.value.getEditor().getContent()}console.log("data",data);content.value = data.content;
}</script><template><h1>富文本</h1><el-form :model="form"><el-form-item label="标题"><el-input v-model="form.title" autocomplete="off" /></el-form-item><editor ref="editorRef" :init="{height: 500,menubar: true,plugins: ['advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview','anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen','insertdatetime', 'media', 'table', 'code', 'help', 'wordcount'],toolbar: 'undo redo | blocks | ' +'bold italic forecolor | alignleft aligncenter ' +'alignright alignjustify | bullist numlist outdent indent | ' +'removeformat | help | image | table',content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px }'}" /><el-form-item><el-button @click="addNews">添加</el-button></el-form-item></el-form><hr/><div v-html="content"></div>
</template><style lang="scss" scoped></style>