【Vue】运行npm run dev出现98%vue-quill-editor 富文本编辑器错误解决
2024-01-01 21:55:05
感谢:SpiritualTuto,来自:VUE vue-quill-editor 富文本编辑器的使用_npm install --save quill/dist/quill.bubble.css qui-CSDN博客
1、下载Vue-Quill-Editor
npm install vue-quill-editor --save
2、如果还不行,下载quill(Vue-Quill-Editor需要依赖)
npm install quill --save
3、全局引入
??? ?import 'quill/dist/quill.core.css'
??? ?import 'quill/dist/quill.snow.css'
??? ?import 'quill/dist/quill.bubble.css'
??? ?import { quillEditor } from 'vue-quill-editor
??? ?//单独页面注册一下
??? ?exp def{
??? ??? ?components: {quillEditor},
??? ?}
<quill-editor
ref="newEditor"
v-model="content"
class="qediter"
:style="`height: ${height}px`"
:options="editorOption"
@change="onEditorBlur($event)"
/>
4、** 选项配置(如果为空的就默认展示所有选项)
?
editorOption: {
placeholder: '请在这里输入',
modules: {
toolbar: [
['bold', 'italic', 'underline', 'strike'], //加粗,斜体,下划线,删除线
['blockquote', 'code-block'], //引用,代码块
[{ header: 1 }, { header: 2 }], // 标题,键值对的形式;1、2表示字体大小
[{ list: 'ordered' }, { list: 'bullet' }], //列表
[{ indent: '-1' }, { indent: '+1' }], // 缩进
[{ direction: 'rtl' }], // 文本方向
[{ size: ['small', false, 'large', 'huge'] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], //几级标题
[{ color: [] }, { background: [] }], // 字体颜色,字体背景颜色
[{ align: [] }], //对齐方式
['clean'], //清除字体样式
['image', 'video'] //上传图片、上传视频
]
}
},
此时此刻 你就可以实现最基础的富文本编辑器啦~
但是富文本编辑器上传图片的格式为 base64位的 , 后端无法处理
于是我们要调取后端的接口获取地址, 并且要把图片反显到编辑器上
body部分
<template>
<div class="container">
<quill-editor
ref="newEditor"
v-model="content"
class="qediter"
:style="`height: ${height}px`"
:options="editorOption"
@change="onEditorBlur($event)"
/>
<!-- 隐藏upload 上传图片 -->
<el-upload
ref="uploadImg"
class="upload-img"
//这里写入你的接口地址
action="#########"
:before-upload="picBeforeupload"
:on-error="picError"
:on-success="success"
accept="image/png, image/jpeg, image/jpg, image/gif"
:show-file-list="false"
>
<slot name="trigger">
<div id="editorUploadImage" />
</slot>
</el-upload>
</div>
</template>
JS部分
props: {
value: {
type: String,
default: ''
},
option: {
type: Object,
default: () => ({})
},
height: {
type: Number,
default: 500
}
},
data() {
return {
content: '',
editorOption: {
placeholder: '请在这里输入',
modules: {
toolbar: [
['bold', 'italic', 'underline', 'strike'], //加粗,斜体,下划线,删除线
['blockquote', 'code-block'], //引用,代码块
[{ header: 1 }, { header: 2 }], // 标题,键值对的形式;1、2表示字体大小
[{ list: 'ordered' }, { list: 'bullet' }], //列表
[{ indent: '-1' }, { indent: '+1' }], // 缩进
[{ direction: 'rtl' }], // 文本方向
[{ size: ['small', false, 'large', 'huge'] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], //几级标题
[{ color: [] }, { background: [] }], // 字体颜色,字体背景颜色
[{ align: [] }], //对齐方式
['clean'], //清除字体样式
['image', 'video'] //上传图片、上传视频
]
}
},
addImgRange: null
}
},
watch: {
value: {
handler(newValue, preValue) {
if (newValue !== preValue && newValue !== this.content) {
this.content = newValue
}
},
immediate: true
}
},
created() {
Object.assign(this.editorOption, this.option)
},
mounted() {
this.init()
},
methods: {
//成功回调
success(res){
const url = Api.imgUrl +res.data
this.addImg(url)
},
init() {
// 重写图片添加图片
const imgHandler = state => {
if (state) {
document.getElementById('editorUploadImage').click()
}
}
this.$refs.newEditor.quill.getModule('toolbar').addHandler('image', imgHandler)
},
onEditorBlur() {
this.$emit('input', this.content)
},
// 图片大小检查
picBeforeupload(file) {
const isLt4M = file.size / 1024 / 1024 < 4
if (!isLt4M) {
this.$message.error('上传图片大小不能超过 4MB!')
}
return isLt4M
},
// 上传图片失败
picError() {
this.$message({
message: '图片添加失败,请重试',
type: 'error'
})
},
// 添加图片
addImg(imgUrl) {
this.addImgRange = this.$refs.newEditor.quill.getSelection() // 检索用户的选择范围, 如果编辑没有焦点,可能会返回一个null
this.$refs.newEditor.quill.insertEmbed(
this.addImgRange != null ? this.addImgRange.index : 0,
'image',
imgUrl,
)
}
}
文章来源:https://blog.csdn.net/dxnn520/article/details/135328866
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!