按照tinymce官网安装并引入tinymce组件。
封装组件:

<template>
  <!-- tinymce使用 -->
  <!-- 封装成组件 -->
  <!-- vue -->
  <div class="tinymce-box">
    <editor v-model="myValue" :init="init" @onClick="onClick"></editor>
  </div>
</template>

引入插件

import tinymce from "tinymce/tinymce"; //tinymce默认hidden,不引入不显示
import Editor from "@tinymce/tinymce-vue";
import "tinymce/themes/silver";
// 编辑器插件plugins
import "tinymce/plugins/image"; // 插入上传图片插件
import "tinymce/plugins/media"; // 插入视频插件
import "tinymce/plugins/table"; // 插入表格插件
import "tinymce/plugins/lists"; // 列表插件
import "tinymce/plugins/wordcount"; // 字数统计插件
import "tinymce/skins/ui/oxide/skin.css"
import "tinymce/skins/ui/oxide/content.css"

基本配置

    data(){
        return{
            init: {
                language_url: '/tinymce/langs/zh_CN.js',
                language: 'zh_CN',
                skin_url: '/tinymce/skins/ui/oxide',
                // skin_url: 'tinymce/skins/ui/oxide-dark',//暗色系
                height: 300,
                plugins: this.plugins,
                toolbar: this.toolbar,
                branding: false,
                menubar: false,
                // 此处为图片上传处理函数,这个直接用了base64的图片形式上传图片,
                // 如需ajax上传可参考https://www.tiny.cloud/docs/configure/file-image-upload/#images_upload_handler
                images_upload_handler: (blobInfo, success, failure) => {
                  const img = 'data:image/jpeg;base64,' + blobInfo.base64()
                  success(img)
                }
              },
              myValue: this.value
        }
    },

引用子组件:

        <tinymce ref="editor" v-model="msg" @onClick="onClick" />

import tinymce from "@/components/common/tinymce.vue";

export default {
data() {
    return {
      msg: "Welcome to Use Tinymce Editor",
      tabIndex: 0,
    };
methods: {
        // 添加相关的事件,可用的事件参照文档=> https://github.com/tinymce/tinymce-vue => All available events
        // 需要什么事件可以自己增加
        onClick (e) {
          this.$emit('onClick', e, tinymce)
        },
        // 清空内容
        clear () {
          this.myValue = ''
        }
    },
    watch: {
        value (newValue) {
          this.myValue = newValue
        },
        myValue (newValue) {
          this.$emit('input', newValue)
        }
    }
}

运行后报错,无法显示工具图标:
在这里插入图片描述

在这里插入图片描述
解决方法:
引入插件时引入icons:

import 'tinymce/icons/default/icons.min.js'

问题解决:
在这里插入图片描述

Logo

前往低代码交流专区

更多推荐