vue-quill-editor是我们再使用vue框架的时候常用的一个富文本编辑器,在进行富文本编辑的时候,我们往往要插入一些图片,vue-quill-editor默认的处理方式是直接将图片转成base64编码,这样的结果是整个富文本的html片段十分冗余,通常来讲,每个服务器端接收的post的数据大小都是有限制的,这样的话有可能导致提交失败,或者是用户体验很差,数据要传递很久才全部传送到服务器。
1.下载Vue-Quill-Editor
npm install vue-quill-editor --save
2.下载quill(Vue-Quill-Editor需要依赖)
npm install quill --save
3.使用
import { quillEditor } from "vue-quill-editor"; //调用编辑器 import 'quill/dist/quill.core.css'; import 'quill/dist/quill.snow.css'; import 'quill/dist/quill.bubble.css';
本次使用到了富文本的封装和上传图片,因要求使用element-ui框架,我上传图片的时候选择了element-ui的Upload上传组件将图片上传到服务器。再将图片链接插入到富文本中,以达到最优的体验。
子组件中将改变的值,直接发送给父组件,父组件来完成逻辑处理
<template> <div> <el-upload //直接隐藏掉就好了,用功能不用样式 v-show="false" id="quill-upload" action="/api/product/upload.do" name="upload_file" multiple :limit="3" list-type="picture" :show-file-list="false" :before-upload="beforeUpload" :on-error="uploadError" :on-success="handleExceed"> <el-button size="small" type="primary" ></el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> <el-row v-loading="uillUpdateImg"> <quillEditor ref="myQuillEditor" @change="onEditorChange($event)" v-model="value" :options="editorOption"/> </el-row> </div> </template> <script> import { quillEditor } from 'vue-quill-editor' import 'quill/dist/quill.core.css' import 'quill/dist/quill.snow.css' import 'quill/dist/quill.bubble.css' export default { name: "richText", components:{quillEditor}, props:['content'], //父组件传过来的,将传过来的渲染到富文本编辑器 data(){ return{ uillUpdateImg:false, //根据图片上传状态来确定是否显示loading动画 serverUrl:'', //上传的图片服务器地址 value:this.content, //富文本内容 editorOption: { //符文本编辑器的配置 placeholder: '', theme: 'snow', modules: { toolbar: { container: [ // 工具栏配置, 默认是全部 ['bold'], ['italic'], ['underline'], ['strike'], [{'list':'ordered'},{'list': 'bullet' }], ['blockquote'], ['code-block'], ['link'], ['image'], [{'list': 'ordered'}, {'list': 'bullet'}], ], handlers: { 'image': function (value) { if (value) { // 给个点击触发Element-ui,input框选择图片文件 document.querySelector('#quill-upload input').click() } else { this.quill.format('image', false); } } } } } } } }, methods:{ onEditorChange({ quill, html, text }) { //富文本编辑器内容发生改变的时候 this.value = html this.$emit('textChange',html) //将富文本编辑器输入的文本发送给父组件,父组件涉及提交添加或者更改 }, beforeUpload(){ //上传图片之前开启loading this.uillUpdateImg = true }, uploadError(){ //图片上传失败,关闭loading this.uillUpdateImg = false this.$message.error('图片插入失败') }, handleExceed(response, file, fileList){ //图片添加成功 let quill = this.$refs.myQuillEditor.quill console.log(response) if (response.status === 0) { let length = quill.getSelection().index; // 插入图片 response.data.url为服务器返回的图片地址 quill.insertEmbed(length, 'image', response.data.url) // 调整光标到最后 quill.setSelection(length + 1) }else{ this.$message.error('图片插入失败') } this.fileList = fileList this.uillUpdateImg = false }, } } </script> <style scoped> </style>
配置中的handlers是用来定义自定义程序的,然而我们配置完后会懵逼地发现,整个富文本编辑器的工具栏的图片上传等按钮都不见了 只保留了几个基本的富文本功能。
这个是因为添加自定义处理程序将覆盖默认的工具栏和主题行为
因此我们要再自行配置下我们需要的工具栏,所有功能的配置如下,大家可以按需配置,这里看起来一大堆,也不美观,大家也可以配置一个单独的config文件引入。
有一点注意的地方,父组件中传入子组件中的值,子组件里面发生改变以后再传给父组件。将变量时存放在props属性中的,我们在调用变量的时候是跟data里面的变量一样的,都是通过this.变量来调用,这个问题就是说父组件传入子组件的变量是不能this.变量直接改变的,要在data或者computed属性里面重新定义一个变量,或者监听props接受变量的变化。改变data或者computed属性里面的变量就不会报错了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]