WangEditor在Vue前端的应用

news2024/10/3 2:15:05

1、在Vue项目中安装WangEditor
对于Vue2:
npm install @wangeditor/editor-for-vue --save
或者 yarn add @wangeditor/editor-for-vue
对于Vue3:
npm install @wangeditor/editor-for-vue@next --save
或者 yarn add @wangeditor/editor-for-vue@next
2、将WangEditor封装成组件WangEditor.vue

<template>
    <div>
      <div>
        <button @click="insertText">insert text</button>
        <button @click="printHtml">print html</button>
        <button @click="disable">disable</button>
      </div>
      <div style="border: 1px solid #ccc; margin-top: 10px">
        <Toolbar
          :editor="editorRef"
          :defaultConfig="toolbarConfig"
          :mode="mode"
          style="border-bottom: 1px solid #ccc"
        />
        <Editor
          :defaultConfig="editorConfig"
          :mode="mode"
          v-model="valueHtml"
          style="height: 400px; overflow-y: hidden"
          @onCreated="handleCreated"
          @onChange="handleChange" @onDestroyed="handleDestroyed" @onFocus="handleFocus" @onBlur="handleBlur" @customAlert="customAlert" @customPaste="customPaste" /> </div> <div style="margin-top: 10px"> <textarea v-model="valueHtml" readonly style="width: 100%; height: 200px; outline: none" ></textarea> </div> </div> </template> <script> import '@wangeditor/editor/dist/css/style.css';
  import { 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) => {
        console.log('created', editor);
        editorRef.value = editor; // 记录 editor 实例,重要!
      };
      const handleChange = (editor) => {
        console.log('change:', editor.getHtml());
      };
      const handleDestroyed = (editor) => {
        console.log('destroyed', editor);
      };
      const handleFocus = (editor) => {
        console.log('focus', editor);
      };
      const handleBlur = (editor) => {
        console.log('blur', editor);
      };
      const customAlert = (info, type) => {
        alert(`【自定义提示】${type} - ${info}`);
      };
      const customPaste = (editor, event, callback) => {
        console.log('ClipboardEvent 粘贴事件对象', event);
  
        // 自定义插入内容
        editor.insertText('xxx');
  
        // 返回值(注意,vue 事件的返回值,不能用 return)
        callback(false); // 返回 false ,阻止默认粘贴行为
        // callback(true) // 返回 true ,继续默认的粘贴行为
      };
  
      const insertText = () => {
        const editor = editorRef.value;
        if (editor == null) return;
  
        editor.insertText('hello world');
      };
  
      const printHtml = () => {
        const editor = editorRef.value;
        if (editor == null) return;
        console.log(editor.getHtml());
      };
  
      const disable = () => {
        const editor = editorRef.value;
        if (editor == null) return;
        editor.disable()
      };
  
      return {
        editorRef,
        mode: 'default',
        valueHtml,
        toolbarConfig,
        editorConfig,
        handleCreated,
        handleChange,
        handleDestroyed,
        handleFocus,
        handleBlur,
        customAlert,
        customPaste,
        insertText,
        printHtml,
        disable
      };
    },
  };
  </script>
  

3、调用组件

<template>
  <div>
    <WangEditor></WangEditor>
  </div>
</template>

<script setup>
import WangEditor from './WangEditor.vue'
</script>

4、运行效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/983041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

站在AI大模型十字路口:实地探访2023服贸会

服贸会恰是一面镜子。小到针对蓝领市场的刷脸招聘机器&#xff0c;大到向政企展示的生活服务数据监测平台&#xff0c;无一不在折射出&#xff0c;中国的数字化服务已渗透到个人生活与企业管理的方方面面。 作者|思杭 出品|产业家 处暑过后的北京&#xff0c;仍留着夏天些…

DevEco Studio开发工具无法预览的问题处理

预览如上图报错信息 解决办法&#xff1a; 1. 首先打开 "SDK管理" 下载后即可解决

Docker使用及本地Yolov5打包教程

1. Docker的安装 注意&#xff1a;官方也提供了直接Pull Yolov5的渠道&#xff1a; docker pull ultralytics/yolov5 详见&#xff1a;https://hub.docker.com/r/ultralytics/yolov5 --------------------------------------------------以下正文------------------------…

QT之形态学操作

形态学操作包含以下操作&#xff1a; 腐蚀 (Erosion)膨胀 (Dilation)开运算 (Opening)闭运算 (Closing)形态梯度 (Morphological Gradient)顶帽 (Top Hat)黑帽(Black Hat) 其中腐蚀和膨胀操作是最基本的操作&#xff0c;其他操作由这两个操作变换而来。 腐蚀 用一个结构元素…

ABAP 一般采购申请创建、服务类型采购申请创建BAPI_REQUISITION_CREATE

前言 此文的示例同时可创建一般采购申请或服务采购申请&#xff0c;当采购类型为Z007时&#xff0c;触发服务采购申请相关字段填写 正文 创建服务类型采购申请的时候参数间互相绑定很绕&#xff0c;看了这篇博客才理明白&#xff0c;有兴趣的可以阅读原文 https://wiki.scn.…

Stable Diffusion插件:StyleSelectorXL 之七十七种绘画风格任君选择

本文给大家分享一个应用于 SDXL 的新插件&#xff1a;StyleSelectorXL。通过在UI界面上简单的选择&#xff0c;我们就可以生成多种多样的风格图片&#xff0c;如动漫、水彩、平面、3D、线稿、涂鸦、剪纸、朋克、童话等等。 基本介绍 用过 SDXL 的同学&#xff0c;应该能切身感…

算法leetcode|79. 单词搜索(rust重拳出击)

文章目录 79. 单词搜索&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a;进阶&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 79. 单词搜索&#xff1a; …

提高设计效率,你还需要掌握FeatureManager这些小窍门

FeatureManager 设计树使多种选择和过滤器操作变得更为方便&#xff0c;并在处理模型时提供对多个文件夹和有用工具的访问。 FeatureManager 设计树和图形区域为动态链接。可在任一窗格中选择特征、草图、工程视图和构造几何线。 您可以分割 FeatureManager 设计树&#xff0c;…

力扣每日一题---2594. 修车的最少时间

文章目录 思路解题方法复杂度Code 思路 请注意&#xff0c;能力值越低&#xff0c;修车越快&#xff0c;应该翻译成「排名」&#xff0c;排名越靠前&#xff0c;修车越快。&#xff09;根据题意可以知道r * n * n < t 的&#xff0c;所以可以利用数学知识进行改变公式&#…

灰度变换与空间滤波

灰度变换与空间滤波 背景知识 空间域指包含图像像素的平面&#xff0c;灰度变换与空间滤波均在空间域进行&#xff0c;即直接在图像像素上操作&#xff0c;表示为 g ( x , y ) T [ f ( x , y ) ] g(x,y)T[f(x,y)] g(x,y)T[f(x,y)] &#xff0c;其中 T T T 是在点 ( x , y…

【SWT】 使 ScrolledComposite 中内容动态变化后依然可以滚动

引言&#xff1a; 在用户界面设计中&#xff0c;有时需要在有限的空间内显示大量内容。如果内容超过可视区域的大小&#xff0c;滚动功能可以帮助用户滚动并查看所有内容。本文将介绍如何使用 Eclipse SWT 库中的 ScrolledComposite 控件来实现在滚动区域中显示可滚动的标签。 …

Discuz论坛帖子标题随机高亮颜色,拒绝千篇一律!

DZ论坛帖子标题默认是没有高亮、加粗效果的&#xff0c;如果是要实现某篇帖子标题高亮、加粗&#xff0c;站长或是版主可以点开这篇帖子&#xff0c;在发帖的下方可以看到精华、高亮、图章、置顶等操作&#xff0c;然后点击高亮&#xff0c;可以选择高亮颜色&#xff0c;是否加…

直播预告 | 博睿学院 Bonree ONE接入zabbix数据源提高可观测运维能力

Zabbix是业界覆盖面非常普遍的监控工具。本课程将介绍目前公有云的基础监控体系的构建思路&#xff0c;讲述One产品对接Zabbix数据的必要性与可观测性赋能效果。 课程中会分享数据接入的过程&#xff0c;重点讲解zabbix工作机制&#xff0c;深入分析zabbix数据库表结构&#x…

TCP IP网络编程(四) 基于TCP的服务器端、客户端

文章目录 理解TCP、UDPTCP/IP协议栈链路层IP层TCP/UDP层应用层 实现基于TCP的服务器端、客户端TCP服务器端的默认函数调用顺序进入等待连接请求状态受理客户端连接请求TCP客户端的默认函数调用顺序基于TCP的服务器端、客户端函数调用关系 实现迭代服务器端、客户端实现迭代服务…

算法通关村第十六关:青铜挑战-滑动窗口其实很简单

青铜挑战-滑动窗口其实很简单 1. 滑动窗口基本思想 数组引入双指针的背景&#xff1a; 很多算法会大量移动数组中的元素&#xff0c;频繁移动元素会导致执行效率低下或者超时&#xff0c;使用两个变量能比较好的解决很多相关问题 数组双指针&#xff0c;之前介绍过 对撞型 和…

无涯教程-JavaScript - COMPLEX函数

描述 COMPLEX函数将实系数和虚系数转换为x yi或x yj形式的复数。 语法 COMPLEX (real_num, i_num, [suffix])争论 Argument描述Required/Optionalreal_numThe real coefficient of the complex number. Requiredi_numThe imaginary coefficient of the complex number.Re…

Java基础知识点汇总

一、Java基础知识点整体框架 详细知识点见链接资源&#xff0c;注&#xff1a;框架是用Xmind App完成&#xff0c;查看需下载。 二、基础知识各部分概况 2.1 认识Java 2.2 数据类型和变量 2.3 运算符 2.4 程序逻辑控制 2.5 方法的使用 2.6 数组的定义和使用 2.7 类和对象 2.8 …

Python入门学习14(面向对象)

一、内置方法 二、封装 1. 封装的概念是指&#xff1f; 将现实世界事物在类中描述为属性和方法&#xff0c;即为封装。 2. 什么是私有成员&#xff1f;为什么需要私有成员&#xff1f; 现实事物有部分属性和行为是不公开对使用者开放的。同样在类中描述属性和方法的时…

跑出创新加速度,AI基础软件成AIGC产业发展加速器

2023年中国国际服务贸易交易会&#xff08;以下简称“服贸会”&#xff09;受世界瞩目正在火热进行&#xff0c;9月4日&#xff0c;服贸会专题论坛之“2023中国AIGC创新发展论坛” 在大会期间成功举办&#xff0c;九章云极DataCanvas公司副总裁周晓凌受邀出席论坛&#xff0c;并…