轻量级富文本编辑器wangEditor结合vue使用方法示例


Posted in Javascript onOctober 10, 2018

1、安装

使用npm下载: `npm install wangeditor`

2、 创建实例

(1)基本用法:

<template>
  <div>
    <div id="editor" class="editor"></div>
  </div>
</template>

<script>
import E from 'wangeditor'
export default {
  name: 'editor',
  mounted () {
    var editor = new E('#editor')
    editor.customConfig.onchange = (html) => {
      this.formArticle.content = html
    }
    editor.create()
  }
}
</script>

效果如图

轻量级富文本编辑器wangEditor结合vue使用方法示例

(2)自定义高度写法如下:把菜单和编辑框分开

<template>
  <div>
    <div id="editorMenu" class="editorMenu"></div>
    <div id="editor" class="editor"></div>
  </div>
</template>
<script>
import E from 'wangeditor'
export default {
  name: 'editor',
  mounted () {
    var editor = new E('#editorMenu', '#editor')
    editor.customConfig.onchange = (html) => {
      this.formArticle.content = html
    }
    editor.create()
  }
}
</script>
<style scoped>
.editorMenu {
 border: 1px solid #ccc;
}
.editor {
 margin-top: -1px;//将多出来的一像素边框隐藏
 border: 1px solid #ccc;
 min-height: 400px;//编辑框最小高度
 height:auto;//编辑框高度超过最小高度会根据内容高度自适应
}
</style>

3、上传图片

(1)editor.customConfig.uploadImgShowBase64 = true   // 使用 base64 保存图片

(2)editor.customConfig.uploadImgServer = '/upload' // 上传服务器端地址

/upload是上传图片的服务器端接口,接口返回的数据格式如下(固定的,否则会取不到图片地址!!!):

{
  // errno 即错误代码,0 表示没有错误。
  //    如果有错误,errno != 0,可通过下文中的监听函数 fail 拿到该错误码进行自定义处理
  "errno": 0,

  // data 是一个数组,返回若干图片的线上地址
  "data": [
    "图片1地址",
    "图片2地址",
    "……"
  ]
}

这些基本就够用了。官网也写得很详细滴

wangeditor3+vue2.0简单例子

把wangeditor作为组件的形式使用

子组件中

<template>
  <div id="wangeditor">
    <div ref="editorElem" style="text-align:left"></div>
  </div> 
</template>

<script>
 import E from 'wangeditor'
 export default {
   name: 'editorElem',
   data () {
    return {
     editorContent: '',
    }
   },
   props:['catchData'],  //接收父组件的方法
   mounted() {
     var editor = new E(this.$refs.editorElem)    //创建富文本实例
     editor.customConfig.onchange = (html) => {
       this.editorContent = html
       this.catchData(html) //把这个html通过catchData的方法传入父组件
     }
     editor.customConfig.uploadImgServer = '你的上传图片的接口'
     editor.customConfig.uploadFileName = '你自定义的文件名'
     editor.customConfig.uploadImgHeaders = {
       'Accept': '*/*',
       'Authorization':'Bearer ' + token  //头部token
     }
     editor.customConfig.menus = [     //菜单配置
       'head',
       'list', // 列表
       'justify', // 对齐方式
       'bold',
       'fontSize', // 字号
       'italic',
       'underline',
       'image', // 插入图片
       'foreColor', // 文字颜色
       'undo', // 撤销
       'redo', // 重复
      ] 
           //下面是最重要的的方法
     editor.customConfig.uploadImgHooks = {
       before: function (xhr, editor, files) {
         // 图片上传之前触发
         // xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,files 是选择的图片文件
         
         // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传
         // return {
         //   prevent: true,
         //   msg: '放弃上传'
         // }
       },
       success: function (xhr, editor, result) {
         // 图片上传并返回结果,图片插入成功之后触发
         // xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,result 是服务器端返回的结果
       this.imgUrl=Object.values(result.data).toString()
       },
       fail: function (xhr, editor, result) {
         // 图片上传并返回结果,但图片插入错误时触发
         // xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,result 是服务器端返回的结果
       },
       error: function (xhr, editor) {
         // 图片上传出错时触发
         // xhr 是 XMLHttpRequst 对象,editor 是编辑器对象
       },
       timeout: function (xhr, editor) {
         // 图片上传超时时触发
         // xhr 是 XMLHttpRequst 对象,editor 是编辑器对象
       },

       // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式,可使用该配置
       // (但是,服务器端返回的必须是一个 JSON 格式字符串!!!否则会报错)
       customInsert: function (insertImg, result, editor) {
         // 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)
         // insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果

         // 举例:假如上传图片成功后,服务器端返回的是 {url:'....'} 这种格式,即可这样插入图片:
         let url = Object.values(result.data)   //result.data就是服务器返回的图片名字和链接
         JSON.stringify(url)  //在这里转成JSON格式
         insertImg(url)
         // result 必须是一个 JSON 格式字符串!!!否则报错
       }
     }
     
     
     editor.create() 
   },

父组件中

<template>
 <div id="father">
  <wangeditor :catchData="catchData"></wangeditor>
 </div>
</template>

<script>
 import wangeditor from './wangeditor'
data(){
  return{
   content:""
  }
 },
methods:{
  catchData(value){
     this.content=value   //在这里接受子组件传过来的参数,赋值给data里的参数
    }
 },
components: {
  wangeditor
  },
</script>

上面字最多的地方好好看清楚,只有做了customInsert: function (insertImg, result, editor){}里的步骤,图片才会在富文本中显示,否则是不会自动显示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Ext中下拉列表ComboBox组件store数据格式用法介绍
Jul 15 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
Sep 25 Javascript
js转化毫秒为时间格式代码
Apr 10 Javascript
JavaScript多线程详解
Aug 12 Javascript
jQuery旋转木马式幻灯片轮播特效
Dec 04 Javascript
jQuery下拉框的简单应用
Jun 24 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
JS对象是否拥有某属性如何判断
Feb 03 Javascript
原生JS实现的碰撞检测功能示例
May 18 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
vue init webpack 建vue项目报错的解决方法
Sep 29 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
解决eclipse中没有js代码提示的问题
Oct 10 #Javascript
js实现同一个页面,多个enter事件绑定的示例
Oct 10 #Javascript
在React项目中使用Eslint代码检查工具及常见问题
Oct 10 #Javascript
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 #jQuery
Vue 重置组件到初始状态的方法示例
Oct 10 #Javascript
15个顶级开源JavaScript框架和库
Oct 10 #Javascript
使用Angular 6创建各种动画效果的方法
Oct 10 #Javascript
You might like
PHP静态新闻列表自动生成代码
2007/06/14 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
js函数般调用正则
2008/04/08 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
javascript获取select值的方法分析
2015/07/02 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
总会计师岗位职责
2014/02/19 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python