问题描述
"nofollow" target="_blank" href="https://github.com/surmon-china/vue-quill-editor">vue-quill-editor。具体如何引用作者在项目中已经写得很明白了,我在这里就不再赘述。
"color: #800000">基础简介
1.vue-quill-editor是基于quill(github地址)适用于Vue2的富文本编辑器,所以对于quill的原生属性扩展也是支持的。quill文档地址
2.quill 中有许多扩展和自定义方法功能。比如图片的重定义大小、图片上传的点击处理等。
图片上传
通过查看quill项目issue。发现其中是有对图片上传这方面问题进行考虑和修改的。所以图片上传这个方案是可行的。接下来就是如何实现。
3.首先我们需要在项目中拿到quill的实例。这个在vue-quill-editor项目中有介绍如何获取。基本方法就是通过ref获取你的vue-quill-editor实例,再获取quill实例,代码如下。其中newEditor就是我的vue-quill-editor
this.$refs.newEditor.quill
4.在拿到实例后我们需要考虑如何图片上传并将url插入文本中。通过查找发现可以注册一个自定义的图片处理函数,当顶部的工具栏中的图片按钮被点击的时候,就会触发这个函数。然而在实际使用中你会发现这个函数并不像文档中所说的接收(image, callback)两个参数,image是你的图片,你只需要在callback中将传入处理后的url就可以。而是接收一个参数state,当被点击时就会触发这个函数,并传入state值----true。这里首先介绍一下,如何注册这个处理函数-imgHandler。这里要注意,注册函数要写在mounted生命周期钩子里。
mounted() { var vm =this var imgHandler = async function(state) { if (state) { //button is clicked } } vm.$refs.newEditor.quill.getModule("toolbar").addHandler("image", imgHandler) }
5.通过在stackflow查阅,发现就只能在imgHandler中自己实现点击上传和插入的功能。这样就在editor下面写一个不显示的input,并监听变化上传图片,获取其实例,当imgHandler被点击时,模拟input按钮被点击。代码变成如下示例。
mounted() { var vm =this var imgHandler = async function(image) { vm.addImgRange = vm.$refs.newEditor.quill.getSelection() if (image) { var fileInput = document.getElementById(vm.uniqueId) //隐藏的file文本ID fileInput.click() //加一个触发事件 } } vm.$refs.newEditor.quill.getModule("toolbar").addHandler("image", imgHandler) }
6.最后是input的点击上传和图片url的插入。
HTML代码
<div v-loading="imageLoading" element-loading-text="请稍等,图片上传中"> <quill-editor ref="newEditor" :options="newOption" style="height: 200px; margin-bottom: 54px" v-model="editorContent" @change="editorChange"> </quill-editor> <form action="" method="post" enctype="multipart/form-data" id="uploadFormMulti"> <input style="display: none" :id="uniqueId" type="file" name="avator" multiple accept="image/jpg,image/jpeg,image/png,image/gif" @change="uploadImg('uploadFormMulti')"><!--style="display: none"--> </form> </div>
vue代码
uploadImg: async function(id) { var vm = this vm.imageLoading = true var formData = new FormData($('#' + id)[0]) try { const url = await vm.uploadImgReq(formData)// 自定义的图片上传函数 if (url != null && url.length > 0) { var value = url vm.addImgRange = vm.$refs.newEditor.quill.getSelection() value = value.indexOf('http') != -1 "图片增加失败") } document.getElementById(vm.uniqueId).value='' } catch ({message: msg}) { document.getElementById(vm.uniqueId).value='' vm.$message.warning(msg) } vm.imageLoading = false },
到这里就大功告成啦。如果有什么错误、问题或者更好的解决方案欢迎指正讨论~
最后,在解决这个问题的时候,顺便把ImageResize集成到了控件中。具体实现比较简单可以参考vue-quill-editor中的demo示例
import Quill from 'quill' import { ImageResize } from '../modules/ImageResize.js' Quill.register('modules/imageResize', ImageResize)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
- 谭咏麟2024《暴风女神Lorelei》头版限量编号MQA-UHQCD[WAV+CUE]
- 群星.2003-滚石黄金十年系列33CD【滚石】【WAV+CUE】
- 萧亚轩.2008-3面夏娃【维京】【WAV+CUE】
- 唐娜.1989-那年情人节好冷【喜玛拉雅】【WAV+CUE】
- 赵传《赵传奇》 滚石SACD系列 SACD限量版[ISO][1.1G]
- 黄龄《痒》天韵文化[WAV+CUE][1G]
- 张学友《走过1999》2023头版蜚声环球限量编号[低速原抓WAV+CUE][1G]
- 田震《真的田震精品集》头版限量编号24K金碟[低速原抓WAV+CUE][1G]
- 林俊杰《伟大的渺小》华纳[WAV+CUE][1G]
- 谭艳《遗憾DSD》2023 [WAV+CUE][1G]
- Beyond2024《真的见证》头版限量编号MQA-UHQCD[WAV+CUE]
- 瑞鸣唱片2024-《荒城之月》SACD传统民谣[ISO]
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】