位置: IT常识 - 正文

vue中使用wangeditor富文本编辑器(vue中使用require报错)

编辑:rootadmin
vue中使用wangeditor富文本编辑器

推荐整理分享vue中使用wangeditor富文本编辑器(vue中使用require报错),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue中使用了哪些设计模式,vue中使用nodejs,vue中使用swiper插件实例,vue中使用require报错,vue中使用require报错,vue中使用video标签视频播放,vue中使用原生js,vue中使用swiper插件实例,内容如对您有帮助,希望把文章链接给更多的朋友!

官方文档 

项目中要求实现富文本编辑器取编辑内容

这种编辑器有好多选择了wangeditor富文本编辑器

首先根据文档安装

yarn add @wangeditor/editor# 或者 npm install @wangeditor/editor --saveyarn add @wangeditor/editor-for-vue@next# 或者 npm install @wangeditor/editor-for-vue@next --save

再按照官方的指引 cv 如下代码

<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' // 引入 cssimport { 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: '请输入内容...' } // 组件销毁时,也及时销毁编辑器 onBeforeUnmount(() => { const editor = editorRef.value if (editor == null) return editor.destroy() }) const handleCreated = (editor) => { editorRef.value = editor // 记录 editor 实例,重要! } return { editorRef, valueHtml, mode: 'default', //默认模式 mode: 'simple', //简洁模式 toolbarConfig, editorConfig, handleCreated }; }}</script>

这个时候编辑器的功能已经实现了 如下图

 但是目前为止他还不是我想要的

因为这个编辑器我想让他在弹窗中出现,而且我不需要那么多功能

接着更文档的步子走

 文档里面既然有这个那就肯定可以实现

研究一番发现弱国想要怎加或者修改编辑器的功能首先要获取这个功能的key

 点击Deom示例

打开控制台,输入toolbar.getConfig().toolbarKeys这个时候就可以看到每个功能的key了

vue中使用wangeditor富文本编辑器(vue中使用require报错)

在回个车

 就可以看到详细内容了

这个时候只需要回到代码里面添加

toolbarConfig.toolbarKeys = [ // 菜单 key 'headerSelect', // 分割线 '|', // 菜单 key 'bold', 'italic', 'color', 'justifyLeft', 'justifyRight', 'justifyCenter' // 继续配置其他菜单... ]

就可以实现你想要的功能了,如下图

 我们可通过toolbarKeys: [], 去实现显示哪些菜单,如何排序、分组的功能   通过excludeKeys: []选择去隐藏哪些菜单

最复杂的就是上传图片了,其实这个也很简单

看看文档

一目了然https://www.wangeditor.com/v5/menu-config.html#%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87return中写上如下代码,需要注意的时上传图片后,后端必须返回url图片的链接,否则编辑器中不会显示图片

editorConfig: { placeholder: '点击全屏介绍产品吧...', // autoFocus: false, // 所有的菜单配置,都要在 MENU_CONF 属性下 MENU_CONF: { // 配置字号 // fontSize: [... ], // 图片上传 uploadImage: { server: '/api/admin/uploade', fieldName: 'img', // 单个文件的最大体积限制,默认为 2M maximgSize: 10 * 1024 * 1024, // 10M // 最多可上传几个文件,默认为 100 maxNumberOfimgs: 10, // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 [] allowedimgTypes: ['image/*'], // 自定义上传参数,例如传递验证的 token 等。参数会被添加到 formData 中,一起上传到服务端。 meta: { // token: 'xxx', // otherKey: 'yyy' // img:'' }, // 将 meta 拼接到 url 参数中,默认 false metaWithUrl: false, // 自定义增加 http header headers: { // Accept: 'text/x-json', // otherKey: 'xxx' }, // 跨域是否传递 cookie ,默认为 false withCredentials: true, // 超时时间,默认为 10 秒 timeout: 10 * 1000, //10 秒 // 上传前 onBeforeUpload(imgs) { ElMessage({ message: '图片正在上传中,请耐心等待', grouping: true, duration: 0, customClass: 'uploadTip', iconClass: 'el-icon-loading', showClose: true }); return imgs; }, // 自定义插入图片 customInsert(res, insertFn) { // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,自己手动处理 // 先关闭等待的ElMessage ElMessage.closeAll(); if (res.code === 200) { ElMessage.success({ message: "图片上传成功", grouping: true, }); } else { ElMessage.error({ message: "图片上传失败,请重新尝试", grouping: true, }); } // 从 res 中找到 url alt href ,然后插入图片 insertFn(res.data.url); // console.log(res, "res.data") }, // 单个文件上传成功之后 onSuccess(img, res) { console.log(`${img.name} 上传成功`, res); }, // 单个文件上传失败 onFailed(img, res) { console.log(`${img.name} 上传失败`, res); }, // 上传进度的回调函数 onProgress(progress) { console.log('progress', progress); // progress 是 0-100 的数字 }, // 上传错误,或者触发 timeout 超时 onError(img, err, res) { console.log(`${img.name} 上传出错`, err, res); } },

到这里其实基本功能已经实现了,那我们怎么保存,编辑器中的内容呢

需要知道富文本编辑器是所见即所得的文本编辑器,简单来说就是文本上面写的行内样式,那我们该怎样保存这些行内样式呢,在这里我是写成了组件的形式

官方文档中给出

 methods中写上

onChange(editor) { const text = editor.getHtml() this.$emit('update:content', text)},

当内容变化是就获取当前行内样式

然后在父组件中监听下

watch: { "addlist.content"(value) { // console.log(value, "就是这里") },

在需要的地方

<!-- 编辑器组件 --><editor-all v-model:content="addlist.content" :passSon="addlist.content" /><!-- 编辑器组件结束 -->

就可以实现需要的功能啦

完整代码

<template> <div style="border: 1px solid #ccc; margin-top: 10px;z-index:999;width:537px"> <!-- 工具栏 --> <Toolbar style="border-bottom: 1px solid #ccc" :editor="editor" :defaultConfig="toolbarConfig" /> <!-- 编辑器 --> <Editor style="height:200px; overflow-y: hidden;" :defaultConfig="editorConfig" v-model="passSon" @onChange="onChange" @onCreated="onCreated" /> </div></template><script>import { ElMessage } from 'element-plus'import { Editor, Toolbar } from '@wangeditor/editor-for-vue'export default { props: { passSon: '' }, data() { return { editor: null, toolbarConfig: { /* 显示哪些菜单,如何排序、分组 */ // toolbarKeys: [], /* 隐藏哪些菜单 */ excludeKeys: [ // '|', 'blockquote', 'fontSize', 'fontFamily', 'lineHeight', 'bulletedList', 'numberedList', 'todo', 'emotion', 'group-video', 'group-indent', 'group-more-style', 'insertTable', 'codeBlock',], }, editorConfig: { placeholder: '点击全屏介绍产品吧...', // autoFocus: false, // 所有的菜单配置,都要在 MENU_CONF 属性下 MENU_CONF: { // 配置字号 // fontSize: [... ], // 图片上传 uploadImage: { server: '/api/admin/uploade', fieldName: 'img', // 单个文件的最大体积限制,默认为 2M maximgSize: 10 * 1024 * 1024, // 10M // 最多可上传几个文件,默认为 100 maxNumberOfimgs: 10, // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 [] allowedimgTypes: ['image/*'], // 自定义上传参数,例如传递验证的 token 等。参数会被添加到 formData 中,一起上传到服务端。 meta: { // token: 'xxx', // otherKey: 'yyy' // img:'' }, // 将 meta 拼接到 url 参数中,默认 false metaWithUrl: false, // 自定义增加 http header headers: { // Accept: 'text/x-json', // otherKey: 'xxx' }, // 跨域是否传递 cookie ,默认为 false withCredentials: true, // 超时时间,默认为 10 秒 timeout: 10 * 1000, //10 秒 // 上传前 onBeforeUpload(imgs) { ElMessage({ message: '图片正在上传中,请耐心等待', grouping: true, duration: 0, customClass: 'uploadTip', iconClass: 'el-icon-loading', showClose: true }); return imgs; }, // 自定义插入图片 customInsert(res, insertFn) { // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,自己手动处理 // 先关闭等待的ElMessage ElMessage.closeAll(); if (res.code === 200) { ElMessage.success({ message: "图片上传成功", grouping: true, }); } else { ElMessage.error({ message: "图片上传失败,请重新尝试", grouping: true, }); } // 从 res 中找到 url alt href ,然后插入图片 insertFn(res.data.url); // console.log(res, "res.data") }, // 单个文件上传成功之后 onSuccess(img, res) { console.log(`${img.name} 上传成功`, res); }, // 单个文件上传失败 onFailed(img, res) { console.log(`${img.name} 上传失败`, res); }, // 上传进度的回调函数 onProgress(progress) { console.log('progress', progress); // progress 是 0-100 的数字 }, // 上传错误,或者触发 timeout 超时 onError(img, err, res) { console.log(`${img.name} 上传出错`, err, res); } }, } }, } }, mounted() { }, methods: { onCreated(editor) { this.editor = Object.seal(editor) // 【注意】一定要用 Object.seal() 否则会报错 }, onChange(editor) { const text = editor.getHtml() this.$emit('update:content', text) }, }, beforeDestroy() { const editor = this.editor if (editor == null) return editor.destroy() // 组件销毁时,及时销毁 editor ,重要!!! }, components: { Editor, Toolbar },}</script><style src="@wangeditor/editor/dist/css/style.css"></style>

ok

本文链接地址:https://www.jiuchutong.com/zhishi/295969.html 转载请保留说明!

上一篇:【小程序】新版uniapp登录流程以及获取头像和昵称(小程序新版本)

下一篇:Pytorch复习笔记--导出Onnx模型为动态输入和静态输入(pytorch基础教程)

  • 小米智能充电保护在哪(小米智能充电保护有必要打开吗)

    小米智能充电保护在哪(小米智能充电保护有必要打开吗)

  • 小米10青春版支持指纹解锁功能吗(小米10青春版支持wifi6吗)

    小米10青春版支持指纹解锁功能吗(小米10青春版支持wifi6吗)

  • qq注销后会怎样显示(qq注销后会怎么样)

    qq注销后会怎样显示(qq注销后会怎么样)

  • 台式电脑能搜到网络但连不上怎么办(台式电脑能搜到别人的搜不到自家的)

    台式电脑能搜到网络但连不上怎么办(台式电脑能搜到别人的搜不到自家的)

  • 微信半夜语音通话但没有记录(微信语音半夜响了却没消息)

    微信半夜语音通话但没有记录(微信语音半夜响了却没消息)

  • 朋友圈权限怎么改动(朋友圈权限怎么设置只对一个人开放)

    朋友圈权限怎么改动(朋友圈权限怎么设置只对一个人开放)

  • cctalk缓存视频会过期吗

    cctalk缓存视频会过期吗

  • qq音乐本地下载也不能听了(qq音乐本地下载的音乐怎么存到u盘)

    qq音乐本地下载也不能听了(qq音乐本地下载的音乐怎么存到u盘)

  • 为什么别人打电话显示未知号码(为什么别人打电话给我打不通)

    为什么别人打电话显示未知号码(为什么别人打电话给我打不通)

  • QQ怎么留言(qq怎么留言加照片)

    QQ怎么留言(qq怎么留言加照片)

  • 微光可以自己上传视频吗(微光自己上传电影)

    微光可以自己上传视频吗(微光自己上传电影)

  • 华为snkrs出错(华为snkrs一直显示错误)

    华为snkrs出错(华为snkrs一直显示错误)

  • ip协议是可靠的吗(ip协议是可靠还是不可靠)

    ip协议是可靠的吗(ip协议是可靠还是不可靠)

  • oppo手机接打不了电话(oppo手机打不出去电话怎么回事但接到电话)

    oppo手机接打不了电话(oppo手机打不出去电话怎么回事但接到电话)

  • word文档分成左右两半(word文档分成左右两页怎么恢复)

    word文档分成左右两半(word文档分成左右两页怎么恢复)

  • 淘宝开团提醒收费吗(淘宝什么叫开团提醒)

    淘宝开团提醒收费吗(淘宝什么叫开团提醒)

  • 企业qq能群发消息嘛(企业qq群发消息怎么发)

    企业qq能群发消息嘛(企业qq群发消息怎么发)

  • 出自论语的成语及解释(出自论语的成语及出处)

    出自论语的成语及解释(出自论语的成语及出处)

  • 苹果x后壳是什么材质(苹果x的后壳多少钱)

    苹果x后壳是什么材质(苹果x的后壳多少钱)

  • maya属性编辑器在哪里(maya属性编辑器旁边的不见了)

    maya属性编辑器在哪里(maya属性编辑器旁边的不见了)

  • 荣耀note10什么时候更新9.0(荣耀note10现在值得入手吗)

    荣耀note10什么时候更新9.0(荣耀note10现在值得入手吗)

  • 链信实名认证安全吗(链信怎么解绑身份证号)

    链信实名认证安全吗(链信怎么解绑身份证号)

  • 小米mdt1是什么型号(小米md1是什么型号)

    小米mdt1是什么型号(小米md1是什么型号)

  • 手机屏幕自动亮(手机屏幕自动亮屏)

    手机屏幕自动亮(手机屏幕自动亮屏)

  • Nerf_studio 使用记录(nerf 入门)

    Nerf_studio 使用记录(nerf 入门)

  • vue-router传参的四种方式超详细(vue router怎么传值)

    vue-router传参的四种方式超详细(vue router怎么传值)

  • 尚品汇项目笔记(尚品汇在哪)

    尚品汇项目笔记(尚品汇在哪)

  • dubbo实战篇:dubbo超时设置(dubbo dubbox)

    dubbo实战篇:dubbo超时设置(dubbo dubbox)

  • 核定征收的一般纳税人开专票怎么入账
  • 居民企业投资收益免征企业所得税
  • 进项税额转出的例题
  • 如何理解增值税中性特点
  • 收到失业保险稳岗补贴会计分录
  • 一次性开票分期确认收入的税务文件是什么
  • 异地预缴税款怎么抵扣
  • 小规模纳税人可以开1%的专票吗
  • 资产项目有
  • 科目余额转到其他科目
  • 出纳工作的七大技巧
  • 汽车修理店业务范围
  • 其他应收款余额在贷方,怎么填资产负债表
  • 商场交的质保金做什么会计科目?
  • 印花税法律制度规定不征收印花税的是什么
  • 五分钟了解外出经营活动税收管理证明
  • 专票私人能开吗?
  • 公司自有房屋出租 营业范围
  • 微软输入法打不出汉字只有拼音
  • 电脑看电影开全屏画面会迟钝是什么原因
  • 长期负债在报表哪里看
  • linux系统怎么访问共享文件夹
  • appdata文件夹在用户文件夹哪里
  • win10 上帝模式
  • 贸易公司如何办理产地证
  • 业务招待费的会计科目
  • php根据日期判断星座
  • 非货币性资产投资计入什么科目
  • 冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)
  • elementui常用组件有哪些
  • 企业公益性捐赠税前扣除标准
  • 净亏损会影响所有者权益吗
  • vue要怎么学
  • 应收利息的会计处理方法
  • 公司租赁员工电脑怎么办
  • python中sample函数怎么用
  • 你用python做什么
  • python的np.array
  • 服务费的发票税率是多少
  • 基础电信服务和增值电信服务税率
  • SqlServer中用exec处理sql字符串中含有变量的小例子
  • 外包食堂如何进货
  • 未开票收入是什么科目
  • 进项税额是意思
  • 行程单入账多久钱能到账
  • 长期持股的最好方法
  • 结转本月收支
  • 其他综合收益的二级科目有哪些
  • 期初建账明细账怎么建账
  • 公允价值的通俗理解
  • 发票系统中监控怎么设置
  • 同一个法人的两家企业可以进行互相开票吗
  • 鉴证咨询公司
  • 残保金减免优惠政策2023最新
  • 货币资金核算制度是什么
  • 存储过程的输出参数有且只能有一个
  • ssh访问windows
  • u盘启动pe装机工具怎么用
  • 微软的定时炸弹就是Windows XP
  • linux find . -name命令
  • win10电脑清理磁盘
  • win10专业版注册表在哪里
  • swstrtr.exe - swstrtr是什么进程
  • ct.dll
  • 电脑开机后出现win7画面后一直黑屏
  • 构造函数中super()的作用
  • unity3D游戏开发
  • 简述图像批处理的操作过程
  • python输出unicode编码
  • unity怎么学
  • javascript教程完整版
  • android下的单元测试要配置以下说法不正确的是
  • django命令行
  • 安徽省地方税务局刘利庆
  • 江西省税务局官网查询系统
  • ecco made in china
  • 差额开票扣除额多补税
  • 二手车中介公司怎么做账报税
  • 新郑市税务局
  • 美国对华征收关税的优点和不足
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设