互联网第一工具箱,让工作变得更为简单!
  • 489阅读
  • 0回复

[易语言开发] vue中实用wangeditor


会员


发帖
46
楼主  发表于:2020/6/22 20:03


<template>

  <!-- 子组建 -->

  <div class="editor">

    <div ref="toolbar" class="toolbar">  <!-- 头部 -->

    </div>

    <div ref="editor" class="editor-text">  <!-- 内容 -->

    </div>

  </div>

</template>


<script>

import E from 'wangeditor' //引用


export default {

  name: 'Editorbar',

  data () {

    return {

      editor: null,

      content:'',//内容

    }

  },

  watch: {

    isClear (val) {

      // 触发清除文本域内容

      if (val) {

        this.editor.txt.clear();

      }

    }

  },

  props: {

    isClear: {

      type: Boolean,

      default: false

    }

  },

  mounted () {

    this.seteditor();

  },

  methods: {

    seteditor () {

      this.editor = new E(this.$refs.toolbar, this.$refs.editor);


      this.editor.customConfig.uploadImgShowBase64 = true; // base 64 存储图片

      this.editor.customConfig.uploadImgServer = '';// 配置服务器端地址

      this.editor.customConfig.uploadImgHeaders = {      };// 自定义 header

      this.editor.customConfig.uploadFileName = ''; // 后端接受上传文件的参数名

      this.editor.customConfig.uploadImgMaxSize = 2 * 1024 * 1024; // 将图片大小限制为 2M

      this.editor.customConfig.uploadImgMaxLength = 6; // 限制一次最多上传 3 张图片

      this.editor.customConfig.uploadImgTimeout = 3 * 60 * 1000; // 设置超时时间


      // 配置菜单

      this.editor.customConfig.menus = [

        'head', // 标题

        'bold', // 粗体

        'fontSize', // 字号

        'fontName', // 字体

        'italic', // 斜体

        'underline', // 下划线

        'strikeThrough', // 删除线

        'foreColor', // 文字颜色

        'backColor', // 背景颜色

        'link', // 插入链接

        'list', // 列表

        'justify', // 对齐方式

        'quote', // 引用

        'emoticon', // 表情

        'image', // 插入图片

        'table', // 表格

        'video', // 插入视频

        'code', // 插入代码

        'undo', // 撤销

        'redo' // 重复

      ]


      this.editor.customConfig.uploadImgHooks = {

        fail: (xhr, editor, result) => {

          // 插入图片失败回调

        },

        success: (xhr, editor, result) => {

          // 图片上传成功回调

        },

        timeout: (xhr, editor) => {

          // 网络超时的回调

        },

        error: (xhr, editor) => {

          // 图片上传错误的回调

        },

        customInsert: (insertImg, result, editor) => {

          // 图片上传成功,插入图片的回调

        }

      }

      this.editor.customConfig.onchange = (html) => {

        this.content = html;

        this.$emit('content',html);//将内容上传到父组件里

      },

      // 创建富文本编辑器

      this.editor.create();

    }

  }

}

</script>


<style scoped>

.editor {

    border: 1px solid #ccc;

}

.toolbar {

    border-bottom: 1px solid #ccc;

}

.editor-text{

    min-height: 500px;

}

</style>

父组件

<template>

  <div>

    <editor :isClear="isClear" @content="get_content"></editor>

  </div>

</template>


<script>

import editor from '../components/editor'


export default {

  data () {

    return {

      isClear: false

    }

  },

  methods:{

    //获取到子组件传过来的值

    get_content(con){

        console.log(con);//打印内容

    }

  },

  components: {

    editor

  }

}

</script>


快速回复