Vue中使用wangeditor富文本编辑的问题


Posted in Vue.js onFebruary 07, 2021

wangEditor是基于javascript和css开发的 Web富文本编辑器, 轻量、简洁、易用、开源免费。
在我们实际项目上还是比较频繁应用到的,下面出个案例供大家参考学习…

wangEditor文档:https://www.wangeditor.com/

富文本编辑器截图:

Vue中使用wangeditor富文本编辑的问题
Vue中使用wangeditor富文本编辑的问题
Vue中使用wangeditor富文本编辑的问题

<!--富文本编辑器。http://www.wangeditor.com/
使用示例:
<AppEditor v-model="content"></AppEditor>
-->
<template>
 <article ref="editor" class="AppEditor-root"></article>
</template>
<script>
 const E = require('wangeditor');
 export default {
  name: 'AppEditor',
  model: {
   prop: 'value',
   event: 'update:value',
  },
  props: {
   // value值,v-model绑定
   value: {type: String, default: ''},
   // 菜单选项
   menus: {
    type: Array,
    default(){
     return [
      'bold', // 粗体
      'italic',//斜体
      'underline',//下划线
      'fontSize', // 字号
      'strikeThrough',//删除线
      'image', // 插入图片
      'undo', // 撤销


      // 'fontName', // 字体
      // 'italic', // 斜体
      // 'underline', // 下划线
      // 'strikeThrough', // 删除线
      // 'foreColor', // 文字颜色
      // 'backColor', // 背景颜色
      // 'link', // 插入链接
      // 'list', // 列表
      // 'justify', // 对齐方式
      // 'quote', // 引用
      // 'emoticon', // 表情
      // 'image', // 插入图片
      // 'table', // 表格
      // 'video', // 插入视频
      // 'code', // 插入代码
      // 'undo', // 撤销
      // 'redo', // 重复
     ];
    },
   },
  },
  data(){
   return {
    editor: {}, // 编辑器对象
    _value: '', // 内容备份,用于watch时候判断,只在编辑器输入时改变
   };
  },
  computed: {},
  mounted(){
   this.initEditor();
  },
  watch: {
   value(newValue, oldValue){
    // 编辑器onchange更改的不处理,只处理父组件传来的,防止文字回退bug
    if (newValue != this._value) {
     this.editor.txt.html(newValue);
    }
   },
  },
  methods: {
   initEditor(){
    let editor = new E(this.$refs.editor);
    Object.assign(editor.customConfig, {
     menus: this.menus,
     zIndex: 100,
     height: 200,
     pasteFilterStyle: false,
     onchange: (html) => {
      this._value = html; // 更新 _value
      this.$emit('update:value', html); // 更新 value
     },
     customUploadImg:((file, insert)=> {
      if(this.$utils.isEmpty(file)){
       return;
      }
      const msg = this.$Message.loading({
       content: '亲,图片正在拼命地上传中,请稍等...',
       duration: 0
      });
      var params = new FormData();
      params.append('img', file[0]);
      this.$api.post('/synthesis/crm/picture/pictureUpload',params).then(res => {
       insert(res.data.imgUrl)
       setTimeout(msg, 0);
       this.$Message.success('上传成功');
      })
     }),
     uploadImgHooks:{

      customInsert: function (insertImg, result, editor) {
       insertImg(result.url)
      }
     }
    });


    editor.create();
    editor.txt.html(this.value); // 针对数据异步获取的这里无法立即绑定,在watch判断处理
    this.editor = editor;
   },
  },
 };
</script>
<style scoped lang="scss">
 .AppEditor-root{ border: 1px solid #f0f0f0; height: 400px !important;
  /deep/ .w-e-toolbar{ border: none !important; border-bottom: 1px solid #f0f0f0 !important; background-color: #fff !important;

  }
  /deep/ .w-e-text-container{ height: calc(100% - 43px) !important; border: none !important; z-index:1 !important;
   .w-e-text{ height: 100%; overflow-y: auto !important;}
  }
 }

</style>

到此这篇关于Vue中使用wangeditor富文本编辑的问题的文章就介绍到这了,更多相关wangeditor富文本编辑内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
详解Vue 的异常处理机制
Nov 30 Vue.js
Vue——前端生成二维码的示例
Dec 19 Vue.js
vue下拉刷新组件的开发及slot的使用详解
Dec 23 Vue.js
Vue+penlayers实现多边形绘制及展示
Dec 24 Vue.js
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
Vue实现todo应用的示例
Feb 20 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
Vue如何实现组件间通信
May 15 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 #Vue.js
vue如何使用rem适配
Feb 06 #Vue.js
如何管理Vue中的缓存页面
Feb 06 #Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 #Vue.js
vue3.0 自适应不同分辨率电脑的操作
Feb 06 #Vue.js
vue使用echarts画组织结构图
Feb 06 #Vue.js
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 #Vue.js
You might like
提升PHP执行速度全攻略
2006/10/09 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
python 读取文件并替换字段的实例
2018/07/12 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
Weblogc domain问题
2014/01/27 面试题
商务英语专业自荐信
2013/10/14 职场文书
商务专员岗位职责
2013/11/23 职场文书
竞争上岗实施方案
2014/03/21 职场文书
监察建议书格式
2014/05/19 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript