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 18 Vue.js
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 Vue.js
基于vuex实现购物车功能
Jan 10 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
Vue实现todo应用的示例
Feb 20 Vue.js
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
vue前端工程的搭建
Mar 31 Vue.js
详解Vue的sync修饰符
May 15 Vue.js
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
vue的项目如何打包上线
Apr 13 Vue.js
Vue操作Storage本地化存储
Apr 29 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网站开发中常用的8个小技巧
2015/02/13 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
python清理子进程机制剖析
2017/11/23 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
Python目录和文件处理总结详解
2019/09/02 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
诚信考试倡议书
2014/04/15 职场文书
企业宣传口号
2014/06/12 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
单位介绍信格式
2015/01/31 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang