vue2使用wangEditor

简介: vue2使用wangEditor

vue2使用wangEditor

效果

image.png

wangEditor官网

安装

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

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

组件封装

editorVue.vue

<template>
  <div>
    <div style="border: 1px solid #ccc; margin-top: 10px">
      <!-- 工具栏 -->
      <Toolbar
        style="border-bottom: 1px solid #ccc"
        :editor="editor"
        :defaultConfig="toolbarConfig"
      />
      <!-- 编辑器 -->
      <Editor
        style="height: 400px; overflow-y: hidden"
        :defaultConfig="editorConfig"
        v-model="html"
        @onChange="onChange"
        @onCreated="onCreated"
      />
    </div>
  </div>
</template>

<script>
import {
   
    Editor, Toolbar } from "@wangeditor/editor-for-vue";
export default {
   
   
  name: "editorVue",
  components: {
   
    Editor, Toolbar },
  props: {
   
   
    content: {
   
   
      type: String,
      default: '',
    },
    readOnlys: {
   
    // 只读
      type: Boolean,
      default: false,
    },
  },
  data() {
   
   
    return {
   
   
      editor: null,
      html: '',
      toolbarConfig: {
   
   
        /* 显示哪些菜单,如何排序、分组 */ 
        toolbarKeys: [
          'headerSelect', 
          // '|', 
          'bold', 
          'underline', 
          'italic', 
          'color', 
          'bgColor', 
          // '|', 
          'indent',  // 增加缩进
          'delIndent',  // 减少缩进
          'justifyLeft',  // 左对齐
          'justifyRight',  // 右对齐
          'justifyCenter',  // 居中
          'justifyJustify',  // 两端对齐
          // '|', 
          'fontSize', 
          'fontFamily', 
          'lineHeight', 
          // '|', 
          'bulletedList', 
          'numberedList', 
          'todo', 
          'insertLink', 
          'insertTable', 
          // '|', 
          'codeBlock', 
          'divider', 
          'uploadImage', 
          'undo', 
          'redo', 
        ], 
        // excludeKeys: [ ], /* 隐藏哪些菜单 */ 
      },
      editorConfig: {
   
   
        placeholder: "请输入内容",
        // autoFocus: false,
        // readOnly: true, // 只读、不可编辑
        // 所有的菜单配置,都要在 MENU_CONF 属性下
        MENU_CONF: {
   
   
          // 配置上传图片
          uploadImage: {
   
   
            customUpload: this.uploaadImg
          },
        },
      },
    };
  },
  watch: {
   
   
    readOnlys: {
   
   
      handler(newV) {
   
   
        if(newV) {
   
   
          this.editor.disable()  // 只读模式
        }
      }
    },
  },
  methods: {
   
   
    uploaadImg(file, insertFn){
   
   
      this.$emit('uploadImg', file, insertFn)
    },
    onCreated(editor) {
   
   
      this.editor = Object.seal(editor);
    },
    onChange(editor) {
   
   
      this.$emit('changeData', this.html)
    },
  },
  created() {
   
   
    this.html = this.content;
  },
  beforeDestroy() {
   
   
    const editor = this.editor;
    if (editor == null) return;
    editor.destroy(); // 组件销毁时,及时销毁 editor
  },
};
</script>

<style src="@wangeditor/editor/dist/css/style.css"></style>

组件使用

index.vue

<template>
  <div>
    <editor-vue 
    :content="content"
    :readOnlys="readOnlys"
    @changeData="hChangeData"
    @uploadImg="hUploadImg"
    />
  </div>
</template>

<script>
import editorVue from './module/editorVue.vue'
export default {
   
   
  components: {
   
   
    editorVue,
  },
  data() {
   
   
    return {
   
   
      readOnlys: false,
      content: `<p style="text-align: center;"><strong>我是标题</strong></p><p style="text-align: center;"><br></p>`,
    };
  },
  methods: {
   
   
    hChangeData(editDataHtml){
   
   
      // 获取最新的html数据
      this.content = editDataHtml
      console.log(this.content)
    },
    hUploadImg(file,insertFn){
   
   
      console.log(file)
      // 插入图片,调接口返回图片url,通过插入conteng
      let imgUrl = 'https://img1.baidu.com/it/u=608404415,1639465523&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
      insertFn(imgUrl);

      // 设置只读
      this.readOnlys = true;
    },
  },
};
</script>

参考
在antd项目中使用wangEditor经验

目录
相关文章
element-plus:el-date-picker日期只选择年月不要日
element-plus:el-date-picker日期只选择年月不要日
1355 0
|
监控 数据库
SNMP-详解指南
SNMP(Simple Network Management Protocol,简单网络管理协议)是一种广泛应用于互联网上的网络管理协议。它提供了一种标准化的方法,使得网络管理员能够收集、组织、解释和显示网络设备的管理信息,从而实现对网络资源的有效监控和控制。
469 13
antd-procomponent中编辑表格动态数据设置的使用
antd-procomponent中编辑表格动态数据设置的使用
506 0
|
前端开发 JavaScript Java
Layui之入门
Layui之入门
301 0
|
安全 Linux Docker
容器安全拾遗 - Rootless Container初探
Docker和Kubernetes已经成为企业IT架构的基础设施,安全容器运行时越来越被关注。近期Docker 19.03中发布了一个重要的特性 “Rootless Container”,在提升容器的安全隔离性和可管理性方面前进了一大步。
7855 1
|
存储 API
vue3中如何动态自定义创建组件并挂载
vue3中如何动态自定义创建组件并挂载
977 90
|
6月前
|
Linux 数据安全/隐私保护 Windows
文件传输告别龟速!1分钟搞定Windows↔CentOS高速通道 小白也能玩转的Xftp秘籍
Xftp 是一款便捷的远程文件传输工具,与 XShell 类似,支持通过 SFTP 协议实现文件上传和下载。首先需下载安装 Xftp,并获取目标 Linux 系统(如 CentOS)的 IP 地址。打开 Xftp 后,按 `Ctrl + N` 新建会话,输入主机 IP、协议(SFTP)、用户名和密码连接服务器。
375 15
文件传输告别龟速!1分钟搞定Windows↔CentOS高速通道 小白也能玩转的Xftp秘籍
|
JavaScript
基于Vue2.X对WangEditor 5富文本编辑器进行封装与使用,支持单个或多个图片点击、粘贴、拖拽上传,Vue3.X项目也可直接使用
这篇文章介绍了如何在Vue 2.X项目中封装和使用WangEditor 5富文本编辑器,支持图片的点击、粘贴和拖拽上传,同时提到封装的组件也适用于Vue 3.X项目,并提供了详细的使用示例和后端配置。
1554 1
基于Vue2.X对WangEditor 5富文本编辑器进行封装与使用,支持单个或多个图片点击、粘贴、拖拽上传,Vue3.X项目也可直接使用
|
11月前
|
关系型数据库 MySQL
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
这篇文章介绍了如何在DBeaver中创建MySQL表的枚举(ENUM)字段,并探讨了MySQL中ENUM类型的一些行为特点,例如ENUM值的默认排序和在插入重复值时的表现。
271 1
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
|
JavaScript
基于Vue2.X/Vue3.X对Monaco Editor在线代码编辑器进行封装与使用
这篇文章介绍了如何在Vue 2.X和Vue 3.X项目中封装和使用Monaco Editor在线代码编辑器,包括安装所需依赖、创建封装组件、在父组件中调用以及处理Vue 3中可能遇到的问题。
2710 1
基于Vue2.X/Vue3.X对Monaco Editor在线代码编辑器进行封装与使用