VUE tinymce editor 配置手册-封装组件

1、vue 配置:

 init: {
                language_url: "./tinymce/zh_CN.js", //public目录下
                language: "zh_CN",
                height: 500,
                menubar: false,
                plugins: "lists image media table paste link searchreplace anchor code preview pagebreak importcss",
                toolbar: "undo redo searchreplace |  formatselect pagebreak | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists link anchor image media table | removeformat code preview", //工具栏展示项
                toolbar_drawer: false,
                image_advtab: true,
                object_resizing: false,
                paste_data_images: true,
                content_css: "./tinymce/article.css",
                images_upload_handler: (blobInfo, success, failure) => {
                    this.uploadFile(blobInfo.blob()).then(fileUrl => success(fileUrl)).catch(err => failure(err))
                }
            },

toolbar 配置项说明:

配置项 所属插件 描述
newdocument 核心 创建新文档
bold 核心 加粗
italic 核心 斜体
underline 核心 下划线
strikethrough 核心 删除线
alignleft 核心 居左
aligncenter 核心 居中
alignright 核心 居右
alignjustify 核心 两端对齐
alignnone 核心 清除
styleselect 核心 格式选择下拉框(缩进、行高)
formatselect 核心 段落选择下拉框(段落、标题)
fontselect 核心 字体选择下拉框
fontsizeselect 核心 字号选择下拉框
cut 核心 剪切
copy 核心 复制
paste 核心 粘贴
outdent 核心 减少缩进
indent 核心 增加缩进
blockquote 核心 引用
undo 核心 撤消
redo 核心 恢复
removeformat 核心 清除格式
subscript 核心 下标
superscript 核心 上标
visualaid 核心 网格线
insert 核心 插入的集合按钮
hr hr 水平线
bullist lists 无序列表
numlist lists 有序列表
link link 添加和修改链接
unlink link 去除链接格式
openlink link 打开选中链接
image image 添加和修改图片
charmap charmap 特殊符号
pastetext paste 粘贴纯文本
print print 打印
preview preview 预览
anchor anchor 作者
pagebreak pagebreak 分页符
spellchecker spellchecker 拼写检查
searchreplace searchreplace 搜索
visualblocks visualblocks 隐藏块级区域开关
visualchars visualchars 隐藏字符串开关.
code code 代码
help help 帮助
fullscreen fullscreen 全屏
insertdatetime insertdatetime 插入时间
media media 插入/编辑媒体文件
nonbreaking nonbreaking 不间断空格
save save 保存(ajax)
cancel save 取消保存
table table 插入/编辑表格
tabledelete table 删除表格
tablecellprops table 单元格属性
tablemergecells table 合并单元格
tablesplitcells table 拆分单元格
tableinsertrowbefore table 在当前行之前插入一个新行
tableinsertrowafter table 在当前行之后插入一个新行
tabledeleterow table 删除当前行
tablerowprops table 行属性
tablecutrow table 剪切选定行
tablecopyrow table 复制选定行
tablepasterowbefore table 在当前行之前粘贴行
tablepasterowafter table 在当前行之后粘贴行
tableinsertcolbefore table 在当前列之前插入一个列
tableinsertcolafter table 在当前列之后插入一个列.
tabledeletecol table 删除当前列
rotateleft imagetools 逆时针旋转当前图像
rotateright imagetools 顺时针旋转当前图像
flipv imagetools 垂直翻转当前图像
fliph imagetools 水平翻转当前图像
editimage imagetools 打开图像编辑对话框
imageoptions imagetools 打开图像配置对话框
fullpage fullpage 完整页面的文档属性
ltr directionality 设置编写方向从左到右
rtl directionality 设置编写方向从右到左
emoticons emoticons 表情
template template 插入模板
forecolor textcolor 文本颜色
backcolor textcolor 背景颜色
restoredraft restoredraft 恢复到最新的自动保存草稿
insertfile moxiemanager 引入文件
a11ycheck a11ychecker 检查访问性
toc toc 插入目录
quickimage inlite 插入本地图像
quicktable inlite 插入2X2的表格
quicklink inlite 插入连接

封装的完整组件代码:tinymce-editor.vue

<template>
    <div class="tinymce-editor">
        <editor v-model="myValue" :init="init" @onExecCommand="onExecCommand"></editor>
    </div>
</template>
<script>
import Editor from "@tinymce/tinymce-vue";

var cos;
export default {
    name: "tinymce-editor",
    components: {
        Editor
    },
    props: {
        value: {
            type: String,
            default: ""
        }
    },
    data() {
        return {
            init: {
                language_url: "./tinymce/zh_CN.js", //public目录下
                language: "zh_CN",
                height: 500,
                menubar: false,
                plugins: "lists image media table paste link searchreplace anchor code preview pagebreak importcss",
                toolbar: "undo redo searchreplace |  formatselect pagebreak | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists link anchor image media table | removeformat code preview fullscreen", //工具栏展示项
                toolbar_drawer: false,
                image_advtab: true,
                object_resizing: false,
                paste_data_images: true,
                content_css: "./tinymce/article.css",
                images_upload_handler: (blobInfo, success, failure) => {
                    this.uploadFile(blobInfo.blob()).then(fileUrl => success(fileUrl)).catch(err => failure(err))
                }
            },
            myValue: this.value,
            uploading: false,
            cosConfig: []
        };
    },
    mounted() {
        // console.log('tinymce-editor mounted:',this.value)
        tinymce.init({});
        this.cosInit();
    },
    methods: {
        cosInit() {
            this.$http({
                url: this.$http.adornUrl("/sys/oss/config"),
                method: "get",
                params: this.$http.adornParams()
            }).then(({ data }) => {
                if (data && data.code === 200) {
                    this.cosConfig = data.config;
                } else {
                    this.$message.error("请先配置云存储相关信息!");
                }
            });
        },
        onExecCommand(e) {
            //console.log(e)
        },
        uploadFile(file) {
            this.uploading = true;
            return new Promise((resolve, reject) => {
                let formData = new FormData();
                formData.append("file", file);
                this.$http({
                    url: this.$http.adornUrl('/sys/oss/upload'),
                    method: 'post',
                    data: formData,
                    headers: { 'Content-Type': 'multipart/form-data' }
                }).then(({ data }) => {
                    console.log(data)
                    if (data && data.code === 200) {
                        this.$emit('uploaded', data.url)
                        resolve(data.url)
                    } else {
                        this.$message.error("文件上传失败:" + data.msg)
                        reject(data.msg)
                    }
                    this.uploading = false;
                }).catch(err=>reject(err))
            });
            
            
        }
    },
    watch: {
        value(newValue) {
            this.myValue = newValue;
        },
        myValue(newValue) {
            this.$emit("input", newValue);
        }
    }
};
</script>

相关推荐

  1. VUE tinymce editor 配置手册-封装组件

    2024-03-21 23:56:01       20 阅读
  2. 组件封装原则

    2024-03-21 23:56:01       33 阅读
  3. 前端组件封装

    2024-03-21 23:56:01       30 阅读
  4. 原生js封装请求组件

    2024-03-21 23:56:01       13 阅读
  5. 二次封装搜索组件

    2024-03-21 23:56:01       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-21 23:56:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-21 23:56:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 23:56:01       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 23:56:01       20 阅读

热门阅读

  1. 【C#】Microsoft learn入门C#教程简介

    2024-03-21 23:56:01       17 阅读
  2. 20.python——数据读取与存储

    2024-03-21 23:56:01       19 阅读
  3. macOS安装erlang以及rabbitMq详情版本

    2024-03-21 23:56:01       19 阅读
  4. rust - 对文件夹进行zip压缩加密

    2024-03-21 23:56:01       23 阅读
  5. web蓝桥杯真题:灯的颜色变化

    2024-03-21 23:56:01       22 阅读
  6. 软件测试面试接口测试常见问题

    2024-03-21 23:56:01       19 阅读
  7. 【C语言】对称密码——栅栏的加密和解密

    2024-03-21 23:56:01       16 阅读
  8. 什么是虚拟dom

    2024-03-21 23:56:01       20 阅读
  9. Linux之shell文本搜索工具grep

    2024-03-21 23:56:01       17 阅读
  10. android VPN 数据包解析

    2024-03-21 23:56:01       18 阅读
  11. Python从入门到精通秘籍十一

    2024-03-21 23:56:01       16 阅读