【Vue2】vue2项目中如何使用mavon-editor编辑器,数据如何回显到网页,如何回显到编辑器二次编辑
参考网站:
安装使用参考:vue2-常用富文本编辑器使用介绍
html网页展示、编辑器回显二次编辑参考:快速搞懂前端项目如何集成Markdown插件mavon-editor,并回显数据到网页
安装命令
npm install mavon-editor@2.9.1 --save
全局配置
修改main.js文件,添加如下配置
import mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'Vue.use(mavonEditor)
页面中使用
html部分
<mavon-editorplaceholder="输入文章内容..."style="height: 500px"ref="md"v-model="article.contentMd"@imgDel="imgDel"@imgAdd="imgAdd"
><!-- 左工具栏后加入自定义按钮 --><template slot="left-toolbar-after"><el-dropdown><span class="el-dropdown-link"><i class="op-icon fa el-icon-video-camera" title="上传视频"></i></span><el-dropdown-menu slot="dropdown"><el-dropdown-item><el-uploadstyle="display: inline-block":show-file-list="false"ref="upload"name="filedatas"action="":http-request="uploadVideo"multiple><span>上传视频</span></el-upload></el-dropdown-item><el-dropdown-item><div @click="dialogVisible = true">添加视频地址</div></el-dropdown-item></el-dropdown-menu></el-dropdown></template>
</mavon-editor>
data部分
article: {contentMd: "",
},
methods部分
imgAdd: function (pos, $file) {var formdata = new FormData();formdata.append("multipartFile", $file);upload(formdata).then((res) => {this.$refs.md.$img2Url(pos, res.data.url);}).catch((err) => {console.log(err);});
},
imgDel: function (filename) {//delBatchFile(filename[0].split(this.img)[1])
},
//上传视频
uploadVideo(param) {this.openLoading();this.files = param.file;var formData = new FormData();formData.append("multipartFile", this.files);upload(formData).then((res) => {const $vm = this.$refs.md;// 将文件名与文件路径插入当前光标位置,这是mavon-editor 内置的方法$vm.insertText($vm.getTextareaDom(), {prefix: `<video height=100% width=100% controls autoplay src="${res.data.url}"></video>`,subfix: "",str: "",});this.loading.close();}).catch((err) => {this.loading.close();});
},
相关事件介绍:
1.@imgAdd=“imgAdd”:将图片上传到服务器,返回地址替换到md中
2.@imgDel=“imgDel”:删除图片,某些业务场景下,需要删除服务器端图片时需要此方法
3.uploadVideo:上传视频
如何回显
this.$refs.md.d_render的值为mavon-editor编辑器生成的html格式的数据(暂定为contentHtml),可直接保存在数据库。
this.$refs.md.d_value的值为mavon-editor编辑器生成的md格式的数据暂定为contentMarkDown),相当于v-model绑定的值。
网页中回显
1.在vue-cli项目中回显
可以直接利用mavon-editor的v-html属性回显,其中contentHtml即为当时保存在数据库中mavon-editor生成的html数据。
<div class="mavonEditor"><mavon-editor v-html="contentHtml"/>
</div>
向后台发送请求,查询contentHtml,与v-html进行绑定,即可实现回显。
2.在普通的H5网页中回显
还是先查询数据库中contentHtml的数据,然后利用jquery的html()方法或者js的innerHTML属性直接回显html数据。
<div id="blog-content" class="markdown-body"></div>
<script>$("#blog-content").html(blogDetail.blogInfos.blog.contentHtml);
</script>
问题
1.回显的html显示问题,没有样式
- 如果是在vue-cli项目中在你需要展示html的模块引入import "mavon-editor/dist/css/index.css"
- 如果是在H5项目使用cdn引入样式cdn样式地址:https://cdnjs.com/libraries/github-markdown-css
<link href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/4.0.0/github-markdown.css" rel="stylesheet">
2.mavonEditor 有序无序列表不能显示数字和小原点的问题
问题原因:ul、li、ol等标签的样式被覆盖了
解决:在这个div中重新设置样式
/*解决mavonEditor 有序无序列表不显示 common.css样式冲突*/
ul {list-style-type: disc;
}ol {list-style-type: decimal;
}li {list-style: inherit;
}
3.mavonEditor回显图片时,图片大小超出父级div,图片溢出
给回显数据的div的所有img设置max-width,如果超出max-width则图片会进行等比例缩放(一般设置比父级div小一些即可)
我的父级div的id是blog-content
#blog-content img {max-width: 800px;
}
编辑器中回显
上面提到的contentMarkDown
<mavon-editorv-model="contentMarkDown":subfield="true"placeholder="请说明项目"class="markdown"
/>
// md格式数据 回显到编辑器中
this.contentMarkDown = this.$refs.md.d_value;
全部代码
<template><div class="home"><p>一、编辑器正常编辑</p><mavon-editorplaceholder="输入文章内容..."style="height: 500px"ref="md"v-model="article.contentMd"@imgDel="imgDel"@imgAdd="imgAdd"><!-- 左工具栏后加入自定义按钮 --><template slot="left-toolbar-after"><el-dropdown><span class="el-dropdown-link"><i class="op-icon fa el-icon-video-camera" title="上传视频"></i></span><el-dropdown-menu slot="dropdown"><el-dropdown-item><el-uploadstyle="display: inline-block":show-file-list="false"ref="upload"name="filedatas"action="":http-request="uploadVideo"multiple><span>上传视频</span></el-upload></el-dropdown-item><el-dropdown-item><div @click="dialogVisible = true">添加视频地址</div></el-dropdown-item></el-dropdown-menu></el-dropdown></template></mavon-editor><p>二、页面中html展示<el-button @click="hadContent"> 获取内容 </el-button></p><div class="mavonEditor"><mavon-editor v-html="contentHtml" /></div><p>三、回显到编辑器中二次编辑</p><mavon-editorv-model="contentMarkDown":subfield="true"placeholder="请说明项目"class="markdown"/></div>
</template>
<script>
export default {data() {return {article: {contentMd: "",},contentHtml: "",contentMarkDown: "",};},methods: {imgAdd: function (pos, $file) {var formdata = new FormData();formdata.append("multipartFile", $file);upload(formdata).then((res) => {this.$refs.md.$img2Url(pos, res.data.url);}).catch((err) => {console.log(err);});},imgDel: function (filename) {//delBatchFile(filename[0].split(this.img)[1])},//上传视频uploadVideo(param) {this.openLoading();this.files = param.file;var formData = new FormData();formData.append("multipartFile", this.files);upload(formData).then((res) => {const $vm = this.$refs.md;// 将文件名与文件路径插入当前光标位置,这是mavon-editor 内置的方法$vm.insertText($vm.getTextareaDom(), {prefix: `<video height=100% width=100% controls autoplay src="${res.data.url}"></video>`,subfix: "",str: "",});this.loading.close();}).catch((err) => {this.loading.close();});},hadContent() {// html格式数据 回显到htmlthis.contentHtml = this.$refs.md.d_render;// md格式数据 回显到编辑器中this.contentMarkDown = this.$refs.md.d_value;console.log("🚀 ~ hadContent ~ this.contentMarkDown:",this.contentMarkDown);},},mounted() {},
};
</script>
<style lang="scss" scoped>
.home {width: 100%;height: 100%;overflow-y: scroll;
}
/*解决mavonEditor 有序无序列表不显示 common.css样式冲突*/
ul {list-style-type: disc;
}ol {list-style-type: decimal;
}li {list-style: inherit;
}
</style>
效果

相关文章:
【Vue2】vue2项目中如何使用mavon-editor编辑器,数据如何回显到网页,如何回显到编辑器二次编辑
参考网站: 安装使用参考:vue2-常用富文本编辑器使用介绍 html网页展示、编辑器回显二次编辑参考:快速搞懂前端项目如何集成Markdown插件mavon-editor,并回显数据到网页 安装命令 npm install mavon-editor2.9.1 --save全局配置 …...
2、Python面试题解析:如何进行字符串插值?
Python字符串插值详解 字符串插值是将变量或表达式嵌入字符串中的一种技术,Python提供了多种方式实现字符串插值。以下是常见的几种方法及其详细解析和代码示例。 1. 百分号(%)格式化 这是Python早期版本中的字符串插值方法,类似…...
计算机网络-SSH基本原理
最近年底都在忙,然后这两天好点抽空更新一下。前面基本把常见的VPN都学习了一遍,后面的内容应该又继续深入一点。 一、SSH简介 SSH(Secure Shell,安全外壳协议)是一种用于在不安全网络上进行安全远程登录和实现其他安…...
doris:MySQL 兼容性
Doris 高度兼容 MySQL 语法,支持标准 SQL。但是 Doris 与 MySQL 还是有很多不同的地方,下面给出了它们的差异点介绍。 数据类型 数字类型 类型MySQLDorisBoolean- 支持 - 范围:0 代表 false,1 代表 true- 支持 - 关键字&am…...
mysql 存储过程和自定义函数 详解
首先创建存储过程或者自定义函数时,都要使用use database 切换到目标数据库,因为存储过程和自定义函数都是属于某个数据库的。 存储过程是一种预编译的 SQL 代码集合,封装在数据库对象中。以下是一些常见的存储过程的关键字: 存…...
C++ 中的 cJSON 解析库:用法、实现及递归解析算法与内存高效管理
在现代软件开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其易于阅读和编写、易于机器解析和生成的特性,被广泛应用于各种场景。C 作为一种强大的编程语言,自然也需要一个高效的…...
websocket自动重连封装
websocket自动重连封装 前端代码封装 import { ref, onUnmounted } from vue;interface WebSocketOptions {url: string;protocols?: string | string[];reconnectTimeout?: number; }class WebSocketService {private ws: WebSocket | null null;private callbacks: { [k…...
【C语言】球球大作战游戏
目录 1. 前期准备 2. 玩家操作 3. 生成地图 4. 敌人移动 5. 吃掉小球 6. 完整代码 1. 前期准备 游戏设定:小球的位置、小球的半径、以及小球的颜色 这里我们可以用一个结构体数组来存放这些要素,以方便初始化小球的信息。 struct Ball {int x;int y;float r;DWORD c…...
人工智能D* Lite 算法-动态障碍物处理、多步预测和启发式函数优化
在智能驾驶领域,D* Lite 算法是一种高效的动态路径规划算法,适用于处理环境变化时的路径重规划问题。以下将为你展示 D* Lite 算法的高级用法,包含动态障碍物处理、多步预测和启发式函数优化等方面的代码实现。 代码实现 import heapq impo…...
MySQL 8版本认证问题
目录 问题: Public Key Retrieval is not allowed原因: mysql 8.0 调整身份认证机制解决方法(三种) 问题: Public Key Retrieval is not allowed 连接MySQL8数据库的时候,报错内容如下:“Publi…...
Android 开发APP中参数配置与读取总结
以使用MQTT配置的参数 MQTT_BROKER_UR 、MQTT_USER_NAME、 MQTT_PASSWORD为例,说明配置设置和读取应用 项目中使用系统参数(如环境变量和gradle.properties文件中的属性)在Gradle构建脚本中,以下是一个详细的操作文档资料&…...
Scala 语法入门
Scala语法入门 1. 定义变量2. 定义方法3. 闭包4. 声明字符串5. 声明数组6. 声明集合7. 异常处理 1. 定义变量 (变量的类型在变量名之后等号之前声明) 不可变变量(val) 类似于 Java 中的 final 变量,即一旦赋值后,其值不能再被改…...
python中的flask框架
Flask 是一个用Python编写的轻量级Web应用框架 基于WSGI和Jinja2模板引擎 被称为“微框架”,其核心功能简单,不捆绑数据库管理、表单验证等功能,而是通过扩展来增加其他功能 Flask提供最基本的功能,不强制使用特定工具或库 通…...
【redis】缓存设计规范
本文是 Redis 键值设计的 14 个核心规范与最佳实践,按重要程度分层说明: 一、通用数据类型选择 这里我们先给出常规的选择路径图。 以下是对每个步骤的分析: 是否需要排序?: zset(有序集合)用…...
归一化与伪彩:LabVIEW图像处理的区别
在LabVIEW的图像处理领域,归一化(Normalization)和伪彩(Pseudo-coloring)是两个不同的概念,虽然它们都涉及图像像素值的调整,但目的和实现方式截然不同。归一化用于调整像素值的范围,…...
DeepSeek大模型本地部署实战
1. 下载并安装Ollama 打开浏览器:使用你常用的浏览器(如Chrome、Firefox等)访问Ollama的官方网站。无需特殊网络环境,直接搜索“Ollama”即可找到。 登录与下载:进入Ollama官网后,点击右上角的“Download…...
deepseek+kimi自动生成ppt
打开deepseek官网,输入详细的需求,让他生成个ppt 接着deepseek开始思考生成了 接着复制生成了的内容 打开kimi粘贴刚才deepseek生成的内容 可以一键生成啦,下载编辑使用吧...
集成SwanLab与HuggingFace TRL:跟踪与优化强化学习实验
文章目录 1. 引入SwanLabCallback2. 传入Trainer3. 完整案例代码4. GUI效果展示 TRL (Transformers Reinforcement Learning,用强化学习训练Transformers模型) 是一个领先的Python库,旨在通过监督微调(SFT)、近端策略优化…...
cefsharp131升级132测试(WinForms.NETCore)
一、升级(Nuget) 版本说明(readme):最低.NET Core3.1 (NET5.0) Visual C 2019 Redist 二、试运行、兼容性测试 三、后记说明 支持H264版本推荐版本63,79,84,88,100,111,125(支持h264和pdf预览) 其他H264版…...
Gitee AI上线:开启免费DeepSeek模型新时代
Gitee Al上线,并宣布开启免费DeepSeek模型的时代,这是一个非常值得关注的消息,因 为它标志着国内在AI领域的一个重要发展。DeepSeek模型是由阿里巴巴达摩院开发的,旨 在提供强大的自然语言处理(NLP)能力。下面是一些关于这一事件…...
工程师创意竞赛全流程策划:从社区激活到公平投票的实战指南
1. 项目概述:一场别开生面的工程师创意竞赛又到了二月底,这意味着我们年初启动的那个“独轮车”图片配文竞赛,终于要进入最激动人心的投票环节了。我记得很清楚,那是2012年2月初,编辑部觉得冬天太沉闷,想找…...
大语言模型越狱攻击:真实世界提示词生态与防御策略分析
1. 项目概述:一次对“越狱”提示词的田野调查如果你在过去一年里深度使用过ChatGPT、Claude或者国内的文心一言、通义千问这类大语言模型,大概率遇到过这样的情况:你问了一个稍微敏感点的问题,比如“如何制作一个恶作剧软件”&…...
别再被代码劝退!用LilyPond 2.20.0写《铃儿响叮当》乐谱,5分钟搞定你的第一份五线谱
别再被代码劝退!用LilyPond 2.20.0写《铃儿响叮当》乐谱,5分钟搞定你的第一份五线谱 第一次看到LilyPond的界面,很多人会下意识皱眉——满屏的代码和符号,仿佛在劝退非程序员背景的音乐爱好者。但事实上,用LilyPond制…...
基于Javaweb的医院在线挂号系统(10007)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
AI编程助手与代码质量守护:Trunk Cursor插件实战指南
1. 项目概述:当AI编程助手遇上代码质量守护者如果你和我一样,日常重度依赖Cursor这类AI编程助手来加速开发,那么你一定也遇到过类似的困扰:AI生成的代码片段虽然功能上“能用”,但在代码风格、格式一致性、甚至是潜在的…...
Cangaroo:开源CAN总线分析软件的技术架构与部署指南
Cangaroo:开源CAN总线分析软件的技术架构与部署指南 【免费下载链接】cangaroo Open source can bus analyzer software - with support for CANable / CANable2, CANFD, and other new features 项目地址: https://gitcode.com/gh_mirrors/ca/cangaroo Cang…...
R3nzSkin英雄联盟皮肤修改器完整教程:免费体验全皮肤的终极指南
R3nzSkin英雄联盟皮肤修改器完整教程:免费体验全皮肤的终极指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin R3nzSkin是一款专为《英雄联盟》玩家设计的开源皮肤修改工具&a…...
从零上手CircuitJS1:开源电路仿真工具的核心功能与实战演练
1. 初识CircuitJS1:浏览器里的电子实验室 第一次打开CircuitJS1时,我仿佛回到了大学电子实验室——只不过这次所有仪器都装进了浏览器窗口。这个完全开源的工具用JavaScript重构了经典的Falstad电路模拟器,不需要安装任何插件就能在Chrome或…...
从入门到精通:Python开发在Web后端的实战应用
在当今快速发展的互联网时代,Web后端开发作为连接前端界面与数据库的核心,其重要性不言而喻。Python,凭借其简洁的语法、强大的库支持以及活跃的社区,已成为Web后端开发的热门选择。本文将带你从零开始,逐步掌握Python…...
如何在5分钟内快速上手LeRobot机器人AI控制框架:从零到一的完整指南
如何在5分钟内快速上手LeRobot机器人AI控制框架:从零到一的完整指南 【免费下载链接】lerobot 🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 还在为…...
