vue富文本vue-quill-editor

2019-07-31  本文已影响0人  prayzz

富文本插件有很多,之前在做项目的时候也看了很多资料,最后发现还是quill-editor这个插件做好用,支持功能的选择,还有可以自定义上传图片,很方便,我在移动端的微信公众号以及vue的管理分别使用了这个插件。

我们在vue中使用的时候,需要把相应的模块下载到你的node_modules里面。

1.在命令栏输入:npm install vue-quill-editor --save;

2.在你的vue-ceil中的main.js里面需要引入模块:

    import VueQuillEditor from 'vue-quill-editor';

    import 'quill/dist/quill.core.css'

    import 'quill/dist/quill.snow.css'

    import 'quill/dist/quill.bubble.css'

如图所示:

3.在需要使用该组件的页面中:

    3.1引入模块:import { quillRedefine } from "vue-quill-editor-upload";

定义常用的模块

const toolbarOptions = [

  ["bold", "italic", "underline", "image"], // toggled buttons

  [{ header: 1 }, { header: 2 }],

  [{ color: [] }]

];

3.2在指定的<template>

        <quill-editor

                ref="QuillEditor"

                :content="content"

                :options="editorOption"

                @change="onEditorChange($event)"

              ></quill-editor>

</template>

3.3需要在data里面配置参数

editorOption: {

        modules: {

          toolbar: {

            container: toolbarOptions, // 工具栏

            handlers: {

              image: function(value) {

                if (value) {

                  document.getElementById("upload_filed").click();

                } else {

                  this.quill.format("image", false);

                }

              }

            }

          }

        }

3.4methods里面需要定义方法

handleSuccess(res) {

      // 获取富文本组件实例

      console.log(res, "21323");

      let quill = this.$refs.QuillEditor.quill;

      // 如果上传成功

      if (res) {

        // 获取光标所在位置

        let length = quill.getSelection().index;

        // 插入图片,res为服务器返回的图片链接地址

        quill.insertEmbed(length, "image", res);//自定义上传

        // 调整光标到最后

        quill.setSelection(length + 1);

      } else {

        // 提示信息,需引入Message

        Message.error("图片插入失败");

      }

    },

//上传图片的方法使用的传统的input方法上传的

fileChanged(e) {

      const file = e.file;

      this.fr = new FileReader();

      this.targetImg = new FormData();

      this.targetImg.append("file", file, file.name);

      this.fr.readAsDataURL(file);

      this.fr.onload = e => {

        this.upImg = e.target.result;

        this.values = null;

      };

      if (this.targetImg) {

        uploadFile(projectList.file.uploadFile, this.targetImg).then(res => {

          if (res.data.resultCode == "000000") {

            let lit = "http://cfile.12365ai.cn" + res.data.url;

            Toast({

              message: "图片上传成功",

              position: "bottom",

              duration: 1000

            });

            this.handleSuccess(lit);

          }

        });

      }

    },

上一篇下一篇

猜你喜欢

热点阅读