当前位置:
首页 > temp > JavaScript教程 >
-
vue富文本vue-quill-editor实现点击插入条件
前言:vue-quill-editor心得总结。
- 基础用法
- 显示问题(回显格式不正确)
- 插入带颜色字符后 光标颜色改变,后续字体颜色随之变化
- 实现点击富文本外条件列表,自动在富文本中插入,及之后的条件回填
1.安装并引入
下载包并在mian.ts中引入 vue-amap
npm install vue-quill-editor
import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
Vue.use(VueQuillEditor)
在template中
<quill-editor v-model="tempContent" :options="editorOption" ref="myQuillEditor" />
在script中
//data 中
editorOption= [
['bold'], // 加粗 斜体 下划线 删除线
[{ indent: '-1' }, { indent: '+1' }], // 缩进
],
tempContent:"富文本中默认内容"
2.常见问题
1)富文本内容传给服务端后,在别的地方回显的时候,格式显示错误 如 空格
//解决办法 在要显示的地方 加上 ql-editor 这个类名
<div v-html="checkData.data[0].content" class="ql-editor"></div>
2)在富文本中插入带格式内容,该格式会影响之后输入的文本 如颜色 加粗等
//问题出现原因 是因为quill富文本会根据当前光标之前有格式的文本来给之后的文本添加样式,所以 通过插入一个带格式的空格去解决
var num = _this.$refs.myQuillEditor.quill.selection.savedRange.index //获取富文本中光标位置
//以下参数分别为 num富文本中光标位置 data要插入的文本 { color: 'rgb(230, 0, 0)' } 新插入文本的颜色
_this.$refs.myQuillEditor.quill.insertText(num, data, { color: 'rgb(230, 0, 0)' })
_this.$refs.myQuillEditor.quill.insertText(num + data.length, ' ', { color: 'rgba(0, 0, 0, 0.65)' })
_this.$refs.myQuillEditor.quill.selection.savedRange.index = num + data.length + 1 //将光标移到插入的文本(+1 为带格式空格的长度)之后
3.实现业务功能
产品的需求为 通过点击左侧列表,在富文本中插入对应的条件,然后在其它的页面筛选出条件,并将条件替换为具体数据
<ul>
<li v-for="(item, index) in arr" :key="index" v-html="item" @click="addCondition(item)"></li>
</ul>
<quill-editor v-model="tempContent" :options="editorOption" ref="myQuillEditor" />
//富文本会记录之前光标位置,在点击了别的地方后,还是可以获取到光标位置
mounted() {
//使用事件捕获
window.addEventListener('click', this.cancelQuill, true)
},
methods: {
//点击非富文本区域
cancelQuill(e: any) {
if (e.target.nodeName !== 'LI') {
this.Flag = false
}
},
//富文本插入
addCondition(data: any) {
var _this: any = this
if (!this.Flag) return
var num = _this.$refs.myQuillEditor.quill.selection.savedRange.index
_this.$refs.myQuillEditor.quill.insertText(num, data, { color: 'rgb(230, 0, 0)' })
_this.$refs.myQuillEditor.quill.insertText(num + data.length, ' ', { color: 'rgba(0, 0, 0, 0.65)' })
_this.$refs.myQuillEditor.quill.selection.savedRange.index = num + data.length + 1
}
},
beforeDestroy() {
window.removeEventListener('click', this.cancelQuill, true)
}
//别的页面回显的时候 直接字符串查找 比如'<span style="color: rgb(230, 0, 0);">{处理结果}</span>' 然后替换成对应的数据
效果展示
因展示需要,代码略有删减,若功能不能实现或者其他问题 欢迎私信交流
来源:https://www.cnblogs.com/ak-blog/p/15309651.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数