wangeditor 是一款轻量级的富文本编辑器,在我的集体博客我的项目中用到了它,这里做一个记录。
官网地址:地址
装置:npm install wangeditor –save
在 component 目录中创立 wangEditor 文件夹
在 wangEditor 文件夹中创立 index.js 文件
index.js 中的内容
<template>
<div ref="editor"></div>
</template>
<script>
import E from 'wangeditor'
export default {
props: {
value: {
type: String,
default: ''
},
meanArray: {
// 自定义菜单
type: Array,
default: null
}
},
model: {
prop: 'value',
event: 'change'
},
watch: {value: function (value) {if (value !== this.editor.txt.html()) {this.editor.txt.html(this.value)
}
}
// value 为编辑框输出的内容,这里我监听了一下值,当父组件调用得时候,如果给 value 赋值了,子组件将会显示父组件赋给的值
},
data () {
return {
// 默认有这么多菜单,meanArray 有值以 meanArray 为准
defaultMeanus: [
'head',
'bold',
'fontSize',
'fontName',
'italic',
'underline',
'strikeThrough',
'indent',
'lineHeight',
'foreColor',
'backColor',
'link',
'list',
'justify',
'quote',
'emoticon',
'image',
'video',
'table',
'code',
'splitLine',
'undo',
'redo'
],
editor: ''
}
},
methods: {init () {
const _this = this
this.editor = new E(this.$refs.editor)
this.editor.config.uploadImgShowBase64 = true // 应用 base64 保留图片
this.setMenus() // 设置菜单
this.editor.config.onchange = (html) => {_this.$emit('change', html) // 将内容同步到父组件中
}
this.editor.create() // 创立编辑器},
setMenus () {
// 设置菜单
if (this.meanArray) {this.editor.config.menus = this.meanArray} else {this.editor.config.menus = this.defaultMeanus}
},
getHtml () {
// 失去文本内容
return this.editor.txt.html()},
setHtml (txt) {
// 设置富文本外面的值
this.editor.txt.html(txt)
}
},
mounted () {
const that = this
that.$nextTick(function () {that.init()
})
}
}
</script>
在父组件中调用
<template>
<!-- 富文本编辑器 -->
<!-- ref 不同能够实现多个富文本编辑器 -->
<editor ref="editorOne" v-model="detail" @change="change"></editor>
</template>
<script>
import Editor from '@/components/wangEditor'
export default {data () {
return {
// 文章内容
detail: ''
}
}
methods: {change (val) {// console.log(val)
// console.log(this.detail)
}
components: {Editor}
}
</script>