tinymce前端富文本编辑器在vue3中使用说明

1.package.json添加依赖

"@tinymce/tinymce-vue": "^5.1.1",

2.将tinymce的文件放到public文件夹static下

3.页面使用代码

<template>
  <Editor ref="tinymceRef" v-model="value" :init="initstr"></Editor>
</template>
<script>
import Editor from '@tinymce/tinymce-vue'
import { uploadFile } from '@/api/upload'
export default {
  name: 'TpTinymce1',
  data() {
    return {
      initstr: {
        height: 500,
        // readonly: true,
        menubar: true,
        language: 'zh_CN',
        plugins:
          'preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media template code codesample table charmap  pagebreak nonbreaking anchor insertdatetime advlist lists wordcount  help emoticons autosave   autoresize',
        toolbar:
          'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | help',
        images_upload_handler: (blobInfo, progress) =>
          new Promise((resolve, reject) => {
            console.log(99, blobInfo)
            const file = blobInfo.blob() // 转化为易于理解的file对象
            const formData = new FormData()
            formData.append('file', file, file.name)
            formData.append('sysCode', 'HID')
            formData.append('modelCode', this.fieldId)
            formData.append('publicFlag', '1')
            uploadFile(formData)
              .then(res => {
                if (res.isSuccess) {
                  resolve(res.data.fileUrl)
                } else {
                  // eslint-disable-next-line prefer-promise-reject-errors
                  reject('Invalid JSON: ' + res.data)
                }
              })
              .catch(e => {
                // eslint-disable-next-line prefer-promise-reject-errors
                reject({ message: 'HTTP Error: ' })
              })
          }),
        automatic_uploads: true,
      }
    }
  },
  components: {
    // eslint-disable-next-line vue/no-unused-components
    Editor
  },
  props: {
    value: Object,
    fieldId: Object
  }
}
</script>

4.tinymce.min.js引用,在main.js中引用

const element = document.createElement('script')
if (window.__POWERED_BY_QIANKUN__) { element.src = window.__webpack_public_path__ + 'static/tinymce/js/tinymce/tinymce.min.js' } else element.src = '/static/tinymce/js/tinymce/tinymce.min.js'
document.body.appendChild(element)

5.问题解决

富文本在qiankun子应用中使用

// qiankun微前端
if (window.__POWERED_BY_QIANKUN__) {
  window.__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__
  if (window.tinymce) window.tinymce.baseURL = window.__webpack_public_path__ + 'static/tinymce/js/tinymce'
// eslint-disable-next-line brace-style
}

富文本在wujie子应用中使用,且wujie主应用有富文本的引入使用

需要在app.vue中再次引用一下skin.min.css样式文件

<style lang="scss">
// 富文本加载样式
@import "./style/static/skin.min.css";
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值