# 准备工作

安装tinymce-vue npm install @tinymce/tinymce-vue -S 下载tinymce npm install tinymce -S

下载tinymce完成后在node_modules 中找到 tinymce/skins目录,将其复制到static\tinymce目录下面; 下载中文语言包; 下载完成后将其解压到static\tinymce目录下面;

# 组件封装

<template>
    <div>
        <editor id="tinymce" v-model="value" :init="init"></editor>
    </div>
</template>

<script>
//引入基础文件:
    import tinymce from 'tinymce/tinymce'
    import Editor from '@tinymce/tinymce-vue'
    import 'tinymce/themes/silver'
    import 'tinymce/plugins/image'// 插入上传图片插件
    export default {
        name: "tinymce",
        components:{
            Editor
        },
        props:{
            curValue:{
                type:String,
                default:''
            }
        },
        data(){
            return{
                init:{
                    language_url: '/tinymce/langs/zh_CN.js',// 语言包的路径
                    language: 'zh_CN',//语言
                    skin_url: '/tinymce/skins/ui/oxide',// skin路径
                    height: 400,//编辑器高度
                    branding: false,//是否禁用“Powered by TinyMCE”
                    menubar: false,//顶部菜单栏显示
                    elementpath: false,  //禁用编辑器底部的状态栏
                    paste_data_images: true,// 允许粘贴图像
                    plugins:'image',
                    toolbar:['formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat'],
                    images_upload_handler: (blobInfo, success, failure) => {
                           let formData = new FormData();
                        formData.append('folder', 'editor/img');
                        formData.append('upfile', blobInfo.blob(), blobInfo.filename());
                        this.$api.uploadFile(formData).then(response => {
                            if(response.code==1){
                                let fileArr = response.data.files[0].url;
                                success(fileArr);
                            }
                        })
                            .catch(()=>{
                                failure("上传失败")
                            })
                    }
                },
                value: this.curValue
            }
        },
        mounted() {
            tinymce.init({})
        },
        watch: {
            curValue(newValue) {
                this.value = newValue
            },
            value(newValue) {
                this.$emit('input', newValue)
            }
        }
    }
</script>

# 页面中使用

<Tinymce :curValue="initContent" @input="newContent"></Tinymce>

//引入组件
import Tinymce from '@/components/tinymce/tinymce'
export default {
        components:{
            Tinymce
        },
       data() {
            return {
                    initContent:''//默认值
                      }
               },
         methods: {
                     newContent(val){
                         console.log(val);//获取输入内容
                          }
                  }
}
上次更新: 12/6/2019, 4:51:23 PM