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-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
vue项目中的支付功能实现(微信支付和支付宝支付)
Feb 18 Vue.js
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
vue使用echarts实现折线图
Mar 21 Vue.js
vue使用localStorage持久性存储实现评论列表
Apr 14 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中函数rand和mt_rand的区别比较
2012/12/26 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
Python利用IPython提高开发效率
2016/08/10 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
tensorflow 变长序列存储实例
2020/01/20 Python
python 下载文件的多种方法汇总
2020/11/17 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
元旦促销方案
2014/03/15 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
作风整顿剖析材料
2014/09/30 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL