【版本】

  • vue-cli3
  • webpack@4.33.0
  • quill@1.3.6

【步骤】

下载Quill

npm install quill --save

在组件中引入Quill

editor.vue

<template>  <div>    <div class="editor"></div>  </div></template><script>import Quill from 'quill'import 'quill/dist/quill.snow.css'export default {  name: 'editor',  props: {    value: Object  },  data() {    return {      quill:null,      options: {        theme: 'snow',        modules: {            toolbar: [              ['bold', 'italic', 'underline', 'strike'],              ['blockquote', 'code-block'],              [{ 'header': 1 }, { 'header': 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'],              ['link', 'image', 'video']            ]          },          placeholder: 'Insert text here ...'      }    }  },  mounted() {    let dom = this.$el.querySelector('.editor')    this.quill = new Quill(dom, this.options);    this.quill.setContents(this.value)    this.quill.on('text-change', () => {      this.$emit('input', this.quill.getContents())    });  }}</script>

使用该组件

App.vue

<template>  <div>    <div>背景</div>    <editor v-model="bg"></editor>    <div>计划</div>    <editor v-model="plan"></editor>  </div></template><script>import editor from '@/components/editor.vue';export default {  components: {    editor  },  data() {    return {      bg: {},      plan: {}    }  }}</script>

【常用API】

下面请原谅我的佛系翻译 :)

getContents

用于获取编辑器里的内容,这些内容是带格式的,返回值是一个Delta对象

用法

getContents(index: Number = 0, length: Number = remaining): Delta

例子

var delta = this.quill.getContents();

setContents

用于设置编辑器里的内容,传入的delta参数常见使用 getContents 返回的值。传入的内容应以新行结束。返回值是一个Delta对象。 source 可以是 "user" , "api" , "silent"。如果 source 是 "user",当编辑器处于 disabled时该方法会失效。

用法

setContents(delta: Delta, source: String = 'api'): Delta

例子

this.quill.setContents([  { insert: 'Hello ' },  { insert: 'World!', attributes: { bold: true } },  { insert: '\n' }]);

enable

设置用户可编辑能力。如果 source 是 "api" , "silent",不会影响API的调用。

用法

enable(enabled: boolean = true)

例子

this.quill.enable();this.quill.enable(false);   // Disables user input

disable

同enable(false)。

【常见功能】

双击激活编辑状态,失去焦点关闭编辑状态

等会再写

【其他】

我看到也有很多人选择用vue-quill-editor。不太了解,可以看个人需求选择使用。