vue 使用 wangeditor 富文本编辑器

2023-10-27

wangeditor 是一个轻量级 web 富文本编辑器,配置方便,使用简单。

1)安装 wangeditor

终端安装 wangeditor 库:

yarn add @wangeditor/editor
# 或者 npm install @wangeditor/editor --save

2)页面绑定

创建一个 xxx.vue 页面,在 div 上设置 id

<template>  
  <div>
      <div id="editor" style="background: #ffffff;"></div>
  </div>
</template>  

3)页面引入

xxx.vue 页面 引入wangeditor

import E from 'wangeditor'

4)配置wangeditor的配置项

在生命周期 mounted 里配置wangeditor 的配置项:

  mounted () {
    this.initialEditor()
  },
  methods: {
    initialEditor () {
      // 绑定div上的 editor
      this.editor = new E('#editor')
      // 获取输入的内容
      this.editor.config.onchange = html => {
        this.form.content = html;
      };
      // 上传图片到服务器
      this.editor.config.customUploadImg = (files, insertImgFn) => {
      // files 是 input 中选中的文件列表
      // insertImgFn 是获取图片 url 后,插入到编辑器的方法
      // 上传代码返回结果之后,将图片插入到编辑器中
      const params = new FormData();
      params.append("file", files[0]);
      this.$http({
        url: this.uploadUrl,
        method: "post",
        data: params
      }).then(res => {
        if (res.url) {
          // 上传图片,返回结果,将图片插入到编辑器中
          insertImgFn(res.url);
        }
      })
      }
      
      // 上传图片到服务器,是否以base64形式
      this.editor.config.uploadImgShowBase64 = false
      this.editor.config.pasteFilterStyle = false
      this.editor.config.zIndex = 100
      this.editor.config.colors = ['#ffffff', '#000000', '#eeece1', '#1c497d', '#4d80bf', '#4f81bd', '#c0504d', '#9bbb59', '#8064a2', '#4bacc6', '#f79646', "#c00000", '#ff0000', '#ffc000', '#ffff00', '#92d050', '#00b050', '#00b0f0', '#0070c0', '#002060', '#7030a0']
      // 创建一个富文本编辑器
      this.editor.create();
    }
}

5)完整代码

xxx.vue 完整代码:

<template>  
  <div>
      <div id="editor" style="background: #ffffff;"></div>
  </div>
</template>  
<script>
import E from 'wangeditor'
export default {
  name: 'test',
  data () {
    return {
      form: { content: '' },
      baseURI: 'xxx',
      uploadUrl: `${baseURI}/upload?token=xxx`,
    }
  },
    mounted () {
    this.initialEditor()
  },
  methods: {
    initialEditor () {
      // 绑定div上的 editor
      this.editor = new E('#editor')
      // 获取输入的内容
      this.editor.config.onchange = html => {
        this.form.content = html;
      };
      // 上传图片到服务器
      this.editor.config.customUploadImg = (files, insertImgFn) => {
      // files 是 input 中选中的文件列表
      // insertImgFn 是获取图片 url 后,插入到编辑器的方法
      // 上传代码返回结果之后,将图片插入到编辑器中
      const params = new FormData();
      params.append("file", files[0]);
      this.$http({
        url: this.uploadUrl,
        method: "post",
        data: params
      }).then(res => {
        if (res.url) {
          // 上传图片,返回结果,将图片插入到编辑器中
          insertImgFn(res.url);
        }
      })
      }
      
      // 上传图片到服务器,是否以base64形式
      this.editor.config.uploadImgShowBase64 = false
      this.editor.config.pasteFilterStyle = false
      this.editor.config.zIndex = 100
      this.editor.config.colors = ['#ffffff', '#000000', '#eeece1', '#1c497d', '#4d80bf', '#4f81bd', '#c0504d', '#9bbb59', '#8064a2', '#4bacc6', '#f79646', "#c00000", '#ff0000', '#ffc000', '#ffff00', '#92d050', '#00b050', '#00b0f0', '#0070c0', '#002060', '#7030a0'],
      // 配置菜单
      this.editor.config.menus = [
        "head", // 标题
        "bold", // 粗体
        "fontSize", // 字号
        "fontName", // 字体
        "lineHeight", // 行高
        "italic", // 斜体
        "underline", // 下划线
        "strikeThrough", // 删除线
        "foreColor", // 文字颜色
        "backColor", // 背景颜色
        "link", // 插入链接
        "list", // 列表
        "justify", // 对齐方式
        "quote", // 引用
        "emoticon", // 表情
        "image", // 插入图片
        "table", // 表格
        "video", // 插入视频
        "code", // 插入代码
        "undo", // 撤销
        "redo", // 重复
        "fullscreen" // 全屏
      ]
      // 富文本内容
      this.editor.txt.html()
      // 创建一个富文本编辑器
      this.editor.create();
    }
  },
  beforeDestroy() {
    let editor = this.editor
    if (editor == null) return
    // 调用销毁 API,组件销毁时,及时销毁 editor ,重要!!!
    editor.destroy()
    editor = null
  }
}
</script>

页面效果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue 使用 wangeditor 富文本编辑器 的相关文章

  • OpenLayers:放大或缩小后,被破坏的特征会重新出现

    我有一个 OpenLayers Bing 地图应用程序 可以显示危险废物站点 用户可以单击链接来切换地图上站点的子站点 当我通过调用层上的 destroyFeatures 来关闭子站点 它们是向量层上的点 时 它们会按预期消失 但是 如果我
  • Angular JS - 提交到 $http 时日期发生变化 - 时区问题

    我遇到一个奇怪的问题Date当它通过 http put 传递到 API 时发生变化 我怀疑时区问题 Datepicker 触发 ng change 事件 console log Tue Jun 10 2014 00 00 00 GMT 01
  • Cypress:在 JSON 响应中存根特定键

    我想在 Cypress 中存根以下响应 专门存根密钥ds version 可能的值为 0 1 或 2 每个值将在 UI 上显示不同的元素 fixtures user json email email protected cdn cgi l
  • Iphone 上的 Javascript 日期解析

    我正在开发一个针对移动设备的离线 Javascript 网站 iPhone 就是这样的一种移动设备 我正在尝试从 REST API JSON 对象的成员 解析日期 我在用着 Date parse 2010 03 15 10 30 00 这适
  • 检查复选框是否被选中? [复制]

    这个问题在这里已经有答案了 如何通过 jQuery 检查复选框是否被选中 我可以只向元素添加 ID 或类并执行此操作吗 if element val 1 do stuff if element is checked checkbox is
  • CSS 比例和方形中心裁剪图像

    所以我的应用程序中有一个缩略图集合 其大小为200x200 有时原始图像没有这个比例 所以我计划将此图像裁剪为正方形 目前它只是拉伸图像以适合缩略图 所以说我的原始图像大小是400x800 那么图像看起来就很压扁 我想裁剪此图像 以便它查看
  • 如何使用 LeafLe 创建商店地图

    我希望创建一个可以交互的地图 我发现的最好的选择是传单 问题是我没有找到任何资源来解释如何创建自己的地图 我希望创建一个商场地图 用户可以在其中看到所有商店 喷泉 我怎样才能做到这一点 最好的起点是传单示例页面 http leafletjs
  • jQuery 模式窗口从我的表单中删除元素

    jQuery 当我用它创建一个包含表单元素的模式窗口时 当我提交表单时 它会取出这些元素 表格示例
  • javascript - 动态变量

    您好 我正在尝试创建动态变量 但它说 变量 v0 到 v5 未定义 td each function i eval var v i this html 任何帮助将不胜感激 这听起来是个坏主意 你有什么理由不能这样做吗 var tdHtml
  • 定时器内嵌套异步等待 - 不返回所需的值

    我必须使用 Mocha 和 chai 测试来测试端点的响应 下面是相同的代码 async function getData userId let response let interval setInterval async gt resp
  • Ng Bootstrap 日期范围选择器 [markDisabled] 不适用于输入

    我正在尝试禁用某些日期ng 引导范围选择器 https ng bootstrap github io components datepicker overview 目前 我在弹出窗口中有一个范围选择器 并且我正在使用 markDisable
  • History.pushState和页面刷新

    我开始研究 HTML5 新历史 API 不过 我有一个问题 如何处理页面刷新 例如 用户单击一个链接 该链接由 js 函数处理 该函数 异步加载页面内容 使用history pushState 更改URL 用户刷新页面 但是服务器上当然不存
  • 当 Django 管理弹出窗口(绿色加号图标)完成时,是否有事件或其他方式调用 Javascript 函数?

    假设我们有这些 Django 模型 class Band models Model name models CharField max length 256 default Eagles of Death Metal class Song
  • ajax 调用成功后点击链接 href

    我有一个正常的链接 a href http www google com class continue Continue a 我已将点击绑定到一个事件来发布 ajax 请求 如下所示 continue click function ajax
  • 如何从 Laravel 将路由参数传递到 Vue.js

    我有这样的路线来获取带有相关评论的帖子 Route get api topics category id title function category id title return App Topic with comments gt
  • 使用点符号将数字传递到函数中

    如果我有一个对象和函数 var obj 1234 example sample 5678 example sample function example num str if obj num hasOwnProperty str manip
  • 启动 onclick 比使用 document.onload 更快

    我有带有链接的 html 页面 我想在其中附加一个功能onclick事件 一种方法当然是 a href save php Save a 但我知道这不是最佳做法 所以我反而等待window onload 循环遍历链接并将保存功能附加到链接re
  • 使用 Google 地图 API 进行反向地理编码

    我正在研究 JavaScript Google Map API 版本 3 更准确地说 正在研究反向地理定位 在 的帮助下官方文档 http code google com intl fr apis maps documentation ge
  • 有没有用 Javascript 编写的开源 JSDoc 解析器?

    我正在寻找一个可以在我的项目中使用的 JSDoc 解析器 我正在寻找可以传递 JSDoc 注释并接收该注释含义的结构化描述的东西 我见过的大多数工具似乎都能够将 JSDoc 注释转换为 HTML 或其他格式 我正在寻找能够提供可用于输入其他
  • IE 中带有“删除”方法的 jQuery.ajax 问题

    我有一个页面 用户可以使用按钮编辑各种内容并选择触发 ajax 调用 特别是 一个操作会导致远程调用一个 url 其中包含一些数据和 放置 请求 这 因为我使用的是宁静的 Rails 后端 会触发我的更新操作 我还有一个删除按钮 它调用相同

随机推荐

  • 考研英语二大作文模板/图表作文,英语图表作文这一篇就够了

    常见图表类型 表格 它表示多种事物的相互关系 曲线 它常表示事物的变化趋势 柱状 它用来表示几种事物的变化情况及相互关系 饼状 表示各事物在总体中所占的比例及相互关系 其中 柱形图和饼形图出现的频率比较高 图表作文结构 Para 1 描述图
  • 电动车结构及其工作原理

    电动车结构及其工作原理 文章目录 电动车结构及其工作原理 电动车定义 电动车结构 电源系统 电力驱动系统 整车控制器 辅助系统 电动车可能存在的结构形式 电动车定义 纯电动汽车是完全由可充电电池 如铅酸电池 镍镉电池 镍氢电池或锂电子电池
  • Ubuntu更改下载源

    Ubuntu更改下载源 今天美滋滋的打开ubuntu准备下载一个语言包 对于英语不好的我来说 看全英文版的ubuntu系统太吃力了 感觉系统极其不友好 哈哈 然后准备下在一个语言包 但是下载速度及其的慢 只有十几kb每秒 如果按照这样的速度
  • FastAPI利用装饰器实现定时任务

    因为 FastAPI 本身就是高性能异步框架 所以在不使用任何第三方定时任务模块的情况下 FastAPI 也可以很方便的实现定时任务 创建一个 tasks py 文件 复制下面的装饰器代码 import asyncio from logur
  • MyBatis详细执行流程

    目录 MyBatis详细的执行流程 1 创建加载核心配置文件的inputStream流 1 1 Recourse getResourceAsStream String resource 方法 1 2 getResourceAsStream
  • React中使用CSS样式的五种方法,主流推荐CSS Modules和Styled Components

    前言 由于 React的JSX语法 能在React中使用样式的方式有很多 本文主要介绍在React中经常使用CSS样式的五种方法 1行内样式 2声明样式 3引入样式 4 CSS Modules模块化 5 Styled component 1
  • DolphinScheduler3.0.1(数据质量)

    DolphinScheduler3 0 1 数据质量 Refer 1 data quality jar包修改 1 配置文件修改 2 依赖不明确问题 3 scope多修改问题 2 实现方式 1 Spark提交 2 结构解析 1 图1 2 图2
  • Blender一些建模技巧与应用

    平滑卡线 加线 卡结构线 加线 时 按E均匀线条会使加线与边线均匀对齐 投影切割 投影切割 使用调形后的曲线 放到模型表面上方进行投影切割 投影形状是 曲线范围内所能看到的模型 就是切割后的形状 使用流程 1 调整好曲线与屏幕的角度 想完全
  • 并行计算之OpenMP简介

    OpenMP环境安装 基于ubuntu20 04 sudo apt get update sudo apt get install libomp dev OpenMP概述 面向多线程并行编码的编译指导语句 如 pragma omp para
  • ssh连接远程主机执行脚本的环境变量问题

    近日在使用ssh命令ssh user remote myscript sh登陆到远程机器remote上执行脚本时 遇到一个奇怪的问题 myscript sh line n app command not found app是一个新安装的程序
  • ElasticSearch7之function_socre使用心得

    介绍 1 function score是可以修改查询检索文档的分数 使用function score必须定义 一个查询和一个或多个函数 为查询返回的每个文档计算一个新的分数 function score提供的评分函数 1 weight 设置
  • UReport2 报表设计器 在线表格

    UReport2官网 一 UReport2报表设计器 UReport2是一个开源的可视化报表设计器 功能强大 操作简单 可以实现复杂的报表统计 有各种各样的导出和打印功能 支持导入Excel表格 1 报表设计器 2 设计一个简单的用户列表展
  • ifstream之seekg/tellg

    声明 我个人特别讨厌 收费专栏 关注博主才可阅读等行为 推崇知识自由分享 推崇开源精神 呼吁你一起加入 大家共同成长进步 在文件读写的时候 一般需要借助fstream来进行文件操作 常见的操作有seekg 和tellg 但是这两个函数有一些
  • 机器学习之——单变量线性回归

    线性回归 线性回归 Linear Regression 作为Machine Learning 整个课程的切入例子确实有独到的地方 以简单的例子为出发点 将学习任务的主干串起来 问题的建模可以简单如下图所示 线性回归可以分为单变量线性回归 L
  • media sdk 性能优化

    https software intel com sites default files m 2 0 a 7 9 28439 Intel Media SDK E4 B9 8B E4 BC 98 E5 8C 96 E6 8A 80 E6 9C
  • SQLServer开启远程连接

    一 在需要被远程连接的电脑客户端中打开命令提示符输入 ipconfig 找到IPV4地址 二 在SQLServer配置管理器中找到端口 三 1 打开 控制面板 2 打开 系统和安全 3 打开 WindowDefender防火墙 4 打开 高
  • C#中 Console方法介绍

    一般情况下 我们用来输入信息的方法主要是用到如下四个 1 console log 用于输出普通信息 2 console info 用于输出提示性信息 3 console error 用于输出错误信息 4 console warn 用于输出警
  • 20世纪最好的十大算法、算法笔记(2008-11-15 22:16:57、2011-04-21 19:29:05)

    Algorithm 算法 一词与9世纪的阿拉伯学者al Khwarizmi有关 他写的书 al jabr w al muqabalah 代数学 演变成为现在中学的代数教科书 Ad Khwarizmi强调求解问题的有条理的步骤 20世纪最好的
  • 启动虚拟机异常(完整版)——如果已在 BIOS/固件设置中禁用 Intel VT-x,或主机自更改此设置后从未重新启动,则Intel VT-x处于禁用状态

    创建了Linux虚拟机 点击 开机 之后 报了这个错误 笔记本电脑 我的 联想天逸 笔记本电脑 许多键与其他的 比如 华硕笔记本电脑 不同 想在操作系统中按F2 要Fn加 减音量 才有F2的功能 我将这个思想带到 启动BIOS 中 害惨了我
  • vue 使用 wangeditor 富文本编辑器

    wangeditor 是一个轻量级 web 富文本编辑器 配置方便 使用简单 1 安装 wangeditor 终端安装 wangeditor 库 yarn add wangeditor editor 或者 npm install wange