封装vue-quill-editor富文本组件

文章展示了如何在Vue项目中安装并引入vue-quill编辑器,包括引入样式和自定义配置,如工具栏选项和图片上传处理。同时,提到了组件的事件绑定和数据双向绑定,以及在父组件中如何监听和响应编辑器的变化。
摘要由CSDN通过智能技术生成

1、安装

npm install vue-quill

2、引入vue-quill封装quii-editor.vue

<template>
  <div class="ql-container ql-snow">
    <ImgUpload :class="refName" v-show="false" @handleSuccess="handleAvatarSuccess" :propsList="content"
      :isMultiple="true"></ImgUpload>
    <quill-editor v-model="content" :ref="refName" class="ql-editor" :disabled="isDisabled" :options="editorOption"
      @blur="onEditorBlur" @focus="onEditorFocus" @change="onEditorChange" @input="updateValue"></quill-editor>
  </div>
</template>

<script>
// 引入样式和quillEditor
import { quillEditor } from 'vue-quill-editor'
import "quill/dist/quill.core.css"; // import styles
import "quill/dist/quill.snow.css"; // for snow theme
import "quill/dist/quill.bubble.css"; // for bubble theme

// 工具栏配置项
const toolbarOptions = [
  // 加粗 斜体 下划线 删除线 -----['bold', 'italic', 'underline', 'strike']
  ['bold', 'italic', 'underline', 'strike'],
  // 引用  代码块-----['blockquote', 'code-block']
  ['blockquote', 'code-block'],
  // 1、2 级标题-----[{ header: 1 }, { header: 2 }]
  [{ header: 1 }, { header: 2 }],
  // 有序、无序列表-----[{ list: 'ordered' }, { list: 'bullet' }]
  [{ list: 'ordered' }, { list: 'bullet' }],
  // 上标/下标-----[{ script: 'sub' }, { script: 'super' }]
  [{ script: 'sub' }, { script: 'super' }],
  // 缩进-----[{ indent: '-1' }, { indent: '+1' }]
  [{ indent: '-1' }, { indent: '+1' }],
  // 文本方向-----[{'direction': 'rtl'}]
  [{ direction: 'rtl' }],
  // 字体大小-----[{ size: ['small', false, 'large', 'huge'] }]
  [{ size: ['small', false, 'large', 'huge'] }],
  // 标题-----[{ header: [1, 2, 3, 4, 5, 6, false] }]
  [{ header: [1, 2, 3, 4, 5, 6, false] }],
  // 字体颜色、字体背景颜色-----[{ color: [] }, { background: [] }]
  [{ color: [] }, { background: [] }],
  // 字体种类-----[{ font: [] }]
  [{ font: [] }],
  // 对齐方式-----[{ align: [] }]
  [{ align: [] }],
  // 清除文本格式-----['clean']
  ['clean'],
  // 链接、图片、视频-----['link', 'image', 'video']
  ['image', 'video']
]

let timer = null

export default {
  components: {
    quillEditor
  },
  props: {
    value: {
      type: String,
      default: "",
    }
  },
  data() {
    return {
      refName: 'QuillEditor' + this._uid,
      isDisabled: false,
      content: '',
      editorOption: {
        placeholder: '请输入正文',
        theme: 'snow',
        modules: {
          toolbar: {
            container: toolbarOptions,
            handlers: {
              image: (value) => {
                if (value) {
                  // 调用element的图片上传组件
                  document.querySelector(`.${this.refName} input`).click()
                } else {
                  this.quill.format('image', false)
                }
              }
            },
          },
        }
      }
    }
  },
  methods: {
    // 失去焦点事件
    onEditorBlur(e) {
      // console.log('onEditorBlur: ', e)
    },
    // 获得焦点事件
    onEditorFocus(e) {
      // console.log('onEditorFocus: ', e)
    },
    // 内容改变事件
    onEditorChange(e) {
      // console.log('onEditorChange: ', e)
    },
    handleAvatarSuccess(res) {
      // 获取富文本组件实例
      let {quill} = this.$refs[this.refName]
      let range = quill.selection.savedRange;
      if (!range) {
        this.$message.error('请将光标移至输入框内')
        return
      }
      // 插入图片到光标位置
      quill.insertEmbed(range.index,'image', res.url)
      quill.setSelection(range.index + 1);
    },
    updateValue() {
      if (timer) clearTimeout(timer)

      timer = setTimeout(() => {
        this.$emit('updateValue', this.content)
      }, 300)
    }
  },
  watch: {
    value(newValue) {
      this.content = newValue
    }
  }
}
</script>

<style lang="scss" scoped></style>

使用

<QuillEditor v-model="formData.detail" @updateValue="quillInput"></QuillEditor>

// 富文本
    quillInputRemark(value) {
      this.formData.remark = value
    },

ve2(VueECharts 2.x)是一个基于 Vue.js 的 ECharts 图表封装库,它专注于简化图表的使用和集成。而 vue-quill-editor 是一个用于 Vue 环境下的富文本编辑器组件,主要用于处理文本内容。 如果你想要在 ve2 中整合 vue-quill-editor 并支持插入视频,首先你需要安装这两个库,然后按照以下步骤操作: 1. 安装依赖: - 对于 ve2,确保已经添加到你的 Vue 项目中: ``` npm install vue-echarts --save ``` - 对于 quill editor 和处理视频上传的功能,可以这样安装: ``` npm install vue-quill-editor file-saver @mentionjs --save ``` 另外,你可能还需要一个文件上传插件,比如 `vue-file-loader` 或者选择一个支持视频上传的第三方库。 2. 引入并配置: - 在你的 Vue 组件中引入: ```javascript import { ECharts } from 'vue-echarts' import QuillEditor from 'vue-quill-editor' import 'quill/dist/quill.core.css' import 'quill/dist/quill.snow.css' // 或者其他主题 // 如果需要视频上传,也需要引入相应的库 import FileSaver from 'file-saver' import VideoUploader from 'video-uploader-vue' ``` 3. 配置 quill-editor: ```html <template> <QuillEditor v-model="content" :options="editorOptions" /> </template> <script> export default { components: { ECharts, QuillEditor }, data() { return { content: '', editorOptions: { modules: { toolbar: [ ['bold', 'italic', 'underline', 'strike'], // 标题 [{ 'header': 1 }, { 'header': 2 }], // 标题 [{'list': 'ordered'}, {'list': 'bullet'}], // 列表 ['clean'] // 清理格式 ], } } } } </script> ``` 4. 添加视频上传功能: 使用 video-uploader-vue 或其他类似工具来处理视频上传,你可以监听文件变化事件并在用户成功上传视频后将其转换为合适的格式插入到编辑器中。 5. 插入视频: 当视频上传完成后,可以通过 Quill Editor API 插入 HTML 形式的视频标签。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值