首页 > 其他分享 >vue3+ts项目引入富文本编辑器wangeditor

vue3+ts项目引入富文本编辑器wangeditor

时间:2024-03-26 11:57:38浏览次数:27  
标签:文本编辑 const wangeditor ts editor import modelValue any

说明

项目开发中,做到媒体说、资讯等模块时,会需要引入富文本编辑器,对比发现wangeditor使用群众多,并且很多问题也已经有解答。

界面展示

实现要点

  • 引入wangeditor
  • 配置导航栏

代码

<template>
  <div style="border: 1px solid #EEEFF0;border-radius: 5px;overflow: hidden;width: 100%;">
    <Toolbar style="border-bottom: 1px solid #EEEFF0" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" />
    <Editor style="height: 500px; overflow-y: hidden;" v-model="modelValue" @on-change="handleChange"
      :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" />
  </div>
</template>

<script setup lang="ts">
import { uploadFileApi } from '@/api/upfile';
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import { shallowRef } from 'vue';
import { IToolbarConfig, DomEditor } from '@wangeditor/editor'

const toolbarConfig: Partial<IToolbarConfig> = { 
  toolbarKeys: ['headerSelect', 'bold', 'italic', 'underline', 'through', 'bulletedList', 'justifyLeft','justifyCenter','justifyRight', 'undo', 'redo','uploadImage', 'insertLink']
}
const editorRef = shallowRef()

const mode = 'default'
const props = defineProps({
  modelValue: {
    type: [String],
    default: ""
  }
})
const emit = defineEmits(['update:modelValue'])
const modelValue = useVModel(props, 'modelValue', emit)
const editorConfig = {
  MENU_CONF: {
    uploadImage: {
      // 自定义图片上传
      async customUpload(file: any, insertFn: any) {
        uploadFileApi(file).then((response) => {
          const url = response.data.src;
          insertFn(url);
        });
      },
    },
  },
}
const handleCreated = (editor: any) => {
  editorRef.value = editor
}
const handleChange = (editor: any) => {
  modelValue.value = editor.getHtml();
}
onBeforeUnmount(() => {
  const editor = editorRef.value;
  if (editor == null) return;
  editor.destroy();
});
</script>
<style src="@wangeditor/editor/dist/css/style.css"></style>

wangeditor配置

  • 打印配置选项(在handleCreated中打印)
const handleCreated = (editor: any) => {
  editorRef.value = editor
  nextTick(() => {
    const toolbar = DomEditor.getToolbar(editor)
    const curToolbarConfig = toolbar?.getConfig().toolbarKeys
    console.log('curToolbarConfig---',curToolbarConfig)
  })
}
  • 删除某些选项
const toolbarConfig: Partial<IToolbarConfig> = { 
  excludeKeys: ['group-video','divider','emotion','fullScreen']
}
  • 直接配置某些选项
const toolbarConfig: Partial<IToolbarConfig> = { 
  toolbarKeys: ['headerSelect', 'bold', 'italic', 'underline', 'through', 'bulletedList', 'justifyLeft','justifyCenter','justifyRight', 'undo', 'redo','uploadImage', 'insertLink']
}

 

标签:文本编辑,const,wangeditor,ts,editor,import,modelValue,any
From: https://www.cnblogs.com/nicoz/p/18096320

相关文章

  • [算法]分割等和子集算法 & bitset容器应用
    LeetCode416.分割等和子集1题目描述给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。1.1输入测试示例1:输入:nums=[1,5,11,5]输出:true解释:数组可以分割成[1,5,5]和[11]。示例2:输入:nums=[1,2,3,5]......
  • requests.exceptions.MissingSchema: Invalid URLrequests.exceptions.ConnectionErro
    代码如下,运行时出现 requests.exceptions.ConnectionError:HTTPSConnectionPool(host='www.dropbox.com',port=443):Maxretriesexceededwithurl:/s/dm3m1o0tsv9terq/pytorch_model.bin?dl=1(CausedbyNewConnectionError('<urllib3.connection.HTTPSConne......
  • Fastapi和requests文件的下载和上传
     介绍FastApi搭建一个简单下载和上传的服务,通过接口将文件保存在服务器上,而通过requests库子在本机中批量从服务器上传和下载文件FastApi搭建服务#application.py"""fastapi+request上传和下载功能"""fromfastapiimportFastAPI,UploadFilefromfastapi.respon......
  • 常用API:objects类 包装类
      包装类:        ......
  • 【ArkTS】鸿蒙开发 比较两个数的大小 用户界面输入两个数并输出较大数
    在DevEcoStudio中开发一个比较两个数X,Y大小的界面,主要练习对HarmonyOS文本框输入TextInput属性的应用。TextInput的具体使用步骤可以先在官网略作了解 1.设置三个值来分别接收输入的两个值和作比较后较大的值@StateXvalue:string=''@StateYvalue:string=''......
  • ts里面的 ! 和 ? 还有 as以及各种符号的意义以及使用
    ts里面的!和?还有as以及各种符号的意义以及使用 https://www.jianshu.com/p/dd304d5cb3dc类型断言---as把一个大的范围断言成小的、精确的范围typeMethod='GET'|'POST'functiondd(url:string,method:Method){console.log('lll');};letoption=......
  • TTS通用播放库技术设计
    TTS音频播放库技术设计目录介绍01.整体介绍概述1.1项目背景介绍1.2遇到问题1.3基础概念介绍1.4设计目标1.5问题答疑和思考02.技术调研说明2.1语音播放方案2.2TTS技术分析2.3语音合成技术2.4方案选择说明2.5方案设计思路2.6文本生成音频03.系统TT......
  • Django框架之requests对象
    【一】requests对象引入【1】提交GET请求前端form表单中action属性,如果不写的话,默认就是向当前路由请求form表单中的method属性,如果不写默认就是GET请求<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title>{%lo......
  • react 中echarts-for-react使用resize解决图表自适应问题
     importReact,{PureComponent}from"react";importReactEchartsfrom'echarts-for-react';import{useEventListener}from'ahooks';useEventListener('resize',()=>{ref?.current?.getEch......
  • 【VTKExamples::Points】第十期 NormalEstimation
    很高兴在雪易的CSDN遇见你 VTK技术爱好者QQ:870202403   公众号:VTK忠粉前言本文分享VTK样例NormalEstimation,并解析接口vtkPCANormalEstimation,希望对各位小伙伴有所帮助!感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!你的点赞就是我的动力(^U^)ノ~YO1.Norm......