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+element-ui添加自定义右键菜单的方法示例
Dec 08 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
一篇文章学会Vue中间件管道
Jun 20 Vue.js
Vue的生命周期一起来看看
Feb 24 Vue.js
vue+iview实现手机号分段输入框
Mar 25 Vue.js
vue选项卡切换的实现案例
Apr 11 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
php.ini中文版
2006/10/09 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
Python合并多个Excel数据的方法
2018/07/16 Python
浅析python继承与多重继承
2018/09/13 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
Python打印不合法的文件名
2020/07/31 Python
工业设计专业推荐信
2013/10/29 职场文书
新年团拜会主持词
2014/04/02 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
学期个人工作总结
2015/02/13 职场文书
商务代表岗位职责
2015/02/15 职场文书
文明礼仪主题班会
2015/08/13 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
PHP基本语法
2021/03/31 PHP
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
HttpClient实现文件上传功能
2022/08/14 Java/Android