视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
轻量级富文本编辑器wangEditor结合vue使用方法示例
2020-11-27 22:06:16 责编:小采
文档


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>

效果如图

(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.uploadImgShowBase = true   // 使用 base 保存图片

(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){}里的步骤,图片才会在富文本中显示,否则是不会自动显示。

下载本文
显示全文
专题