项目需要:在添加新类别的弹框中,要在输入框中输入多条描述信息,不同的描述信息要换行输入,输入后点击确定传给后端,接口返回成功后点击查看刚添加的新类别时,描述框中展现多条换行的描述信息也要跟填写时一样(即不同的描述换行展示),他们说用富文本比较方便,所以找到了这个插件,刚好满足我想要的功能效果,写下来当笔记。
参考文章:Vue基于vue-quill-editor富文本编辑器使用心得
安装插件:
npm install vue-quill-editor
然后是在需要的组件引入,当然也可以在main.js中引入:
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 { data () { content: '', editorOption: { modules: { toolbar: [ [{ 'list': 'bullet' }] // 这里我只要无序列表图标 ] }, theme: 'snow' }, }, components: { quillEditor } }
HTML部分:
<quill-editor ref="text" v-model="content" class="myQuillEditor" :options="editorOption" />
看看效果吧:
默认情况下工具栏有很多的功能图标,加粗、斜体、上传图片等等,如果有些功能运用不到又不想看到的话,可以在这里可以进行设置设置,将toolbar中用不到的移出掉即可,这里我直接复制参考文章大佬的代码了:
modules:{ toolbar:[ ['bold', 'italic', 'underline', 'strike'], //加粗,斜体,下划线,删除线 ['blockquote', 'code-block'], //引用,代码块 [{ 'header': 1 }, { 'header': 2 }], // 标题,键值对的形式;1、2表示字体大小 [{ 'list': 'ordered'}, { 'list': 'bullet' }], //列表 [{ 'script': 'sub'}, { 'script': 'super' }], // 上下标 [{ 'indent': '-1'}, { 'indent': '+1' }], // 缩进 [{ 'direction': 'rtl' }], // 文本方向 [{ 'size': ['small', false, 'large', 'huge'] }], // 字体大小 [{ 'header': [1, 2, 3, 4, 5, 6, false] }], //几级标题 [{ 'color': [] }, { 'background': [] }], // 字体颜色,字体背景颜色 [{ 'font': [] }], //字体 [{ 'align': [] }], //对齐方式 ['clean'], //清除字体样式 ['image','video'] //上传图片、上传视频 ] }, theme:'snow' } }
这里的modules就是上面data中的 editorOption 的modules,想要啥功能按照你的需要进行添加或者移除就行了。
这里我只是简单的用到列表的效果而已,想看的其他功能介绍的话,可以去看看参考文章的介绍,那边的大佬说的更详细
后续追加:
当我们输入上面的几条列表信息后,直接打印出来是这样的
这个有点看不懂,这样的字符串放到插件也不能渲染成我们想要的 list 标签的效果,此时需要用个方法处理一下转成我们想要看到的富文本的样子,这个方法是我在别人博客里看到的,如下:
escapeStringHTML (str) { str = str.replace(/</g, '<') str = str.replace(/>/g, '>') console.log(str) return str }
处理过后成这样了:
就是上面打印的第二行这样的,现在再把替换后的字符串赋值给上面插件标签quill-editor中绑定的contain,渲染出来即为我们之前输入时的样子