How to set Vue Quill Editor delta content in the Editor

2 min read 05-10-2024
How to set Vue Quill Editor delta content in the Editor


Mastering Delta Content in Vue Quill Editor: A Comprehensive Guide

Introduction

Vue Quill Editor is a popular choice for building rich text editors in Vue.js applications. However, understanding how to work with delta content, the fundamental format used by Quill to represent editor content, is crucial for seamless integration and advanced functionality. This article will guide you through the process of setting delta content in Vue Quill Editor, covering the basics and providing practical examples.

Understanding Delta Content

Quill utilizes a data structure called "delta" to represent editor content. Delta is an array of operations, each describing a change to the document's text or formatting. Each operation has a retain, insert, or delete property, defining the action to perform.

Example:

[
  { "retain": 1 },
  { "insert": "Hello, ", "attributes": { "bold": true } },
  { "retain": 7 },
  { "insert": "\nWorld!", "attributes": { "italic": true } }
]

This delta represents the following text: Hello, World!

  • retain: Keeps existing text. retain: 1 keeps one character.
  • insert: Inserts new text. insert: "Hello, " inserts the text "Hello, ".
  • attributes: Applies formatting. attributes: { "bold": true } makes the inserted text bold.

Setting Delta Content in Vue Quill Editor

To set delta content in your Vue Quill Editor instance, you can use the editor.setContents() method. This method takes a delta object as an argument and updates the editor's content accordingly.

Example:

<template>
  <div>
    <quill-editor v-model="editorContent" ref="myEditor" />
  </div>
</template>

<script>
import { QuillEditor } from '@vueup/vue-quill';

export default {
  components: {
    QuillEditor,
  },
  data() {
    return {
      editorContent: [
        { "retain": 1 },
        { "insert": "Hello, ", "attributes": { "bold": true } },
        { "retain": 7 },
        { "insert": "\nWorld!", "attributes": { "italic": true } }
      ],
    };
  },
  mounted() {
    this.$refs.myEditor.editor.setContents(this.editorContent);
  },
};
</script>

In this example:

  • The editorContent data property holds the delta object.
  • The mounted() lifecycle hook sets the editor content using this.$refs.myEditor.editor.setContents().

Best Practices

  • Use v-model: The v-model directive simplifies two-way binding, making it easy to update your delta content in the data property.
  • Understand Delta Format: Familiarise yourself with the delta format to efficiently manipulate and create delta objects.
  • Use a Delta Library: Consider using a library like quill-delta for working with delta objects. This library offers helper methods for building, manipulating, and comparing delta objects, streamlining your development process.

Advanced Usage

Beyond setting initial content, you can use setContents() to:

  • Load Content from API: Fetch content from a server and set it as the editor's delta content.
  • Implement Undo/Redo: Store delta snapshots and use setContents() to restore previous states.
  • Sync with External Data: Synchronize editor content with other data sources, updating the delta content accordingly.

Conclusion

By understanding delta content and mastering the setContents() method, you can fully leverage the power of Vue Quill Editor. This knowledge empowers you to create dynamic, feature-rich text editors, enabling complex interactions and seamless integration with your Vue.js applications.

References: