轻量级富文本编辑器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 相关文章推荐
js调用AJAX时Get和post的乱码解决方法
Jun 04 Javascript
Jquery 实现checkbox全选方法
Jan 28 Javascript
JavaScript 模块化编程(笔记)
Apr 08 Javascript
js限制input标签中只能输入中文
Jun 26 Javascript
详解js中构造流程图的核心技术JsPlumb
Dec 08 Javascript
Three.js学习之几何形状
Aug 01 Javascript
js实现HashTable(哈希表)的实例分析
Nov 21 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
Aug 07 Javascript
如何理解Vue的render函数的具体用法
Aug 30 Javascript
jQuery实现轮播图源码
Oct 23 jQuery
JQuery常用选择器功能与用法实例分析
Dec 23 jQuery
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
解决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 MemCached高级缓存配置图文教程
2010/08/05 PHP
PHP 命令行参数详解及应用
2011/05/18 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
PHP类的封装与继承详解
2015/09/29 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
php中strtotime函数性能分析
2016/11/20 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
js传值 判断
2006/10/26 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
python数字图像处理之高级形态学处理
2018/04/27 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
《最可爱的人》教学反思
2014/02/14 职场文书
班班通项目实施方案
2014/02/25 职场文书
普通话演讲稿
2014/09/03 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
工作表扬信范文
2015/01/17 职场文书
团员年度个人总结
2015/02/26 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
九年级历史教学反思
2016/02/19 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers