vue 富文本编辑器

  • 安装
1、npm install @wangeditor/editor --save
2、npm install @wangeditor/editor-for-vue --save

  • 使用
.vue文件

//展示
 <div style="border: 1px solid #ccc;width: 95%;">
            <!-- 工具栏 -->
            <Toolbar style="border-bottom: 1px solid #ccc" :editor="editor" :defaultConfig="toolbarConfig" />
            <!-- 编辑器 -->
            <Editor v-if="msg.ProductID" ref="myText" style="height: 500px;overflow: auto;"
              :defaultConfig="editorConfig" v-model="xxxx" @onChange="onChange"
              @onCreated="onCreated" />
          </div>

//引入
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";

//配置
  editor: null,
        toolbarConfig: {
          // toolbarKeys: [ /* 显示哪些菜单,如何排序、分组 */ ],
          excludeKeys: [ /* 隐藏哪些菜单 */
            "group-video", "insertImage" //上传图片、添加本地图片
          ],
          //key的获取
          //1、访问https://www.wangeditor.com/demo/index.html,
          //2、控制台输入toolbar.getConfig().toolbarKeys
          //隐藏那个菜单,就找到对应的key,填入即可
        },
        editorConfig: {
          placeholder: "请输入内容...",
          // autoFocus: false,

          // 所有的菜单配置,都要在 MENU_CONF 属性下
          MENU_CONF: {
            "uploadImage": { //配置上传图片
              fieldName: 'file',//上传文件名是file
              meta: {
                 //上传接口需要额外传递的参数
              },
              maxFileSize: 5 * 1024 * 1024, // 1M
              allowedFileTypes: ['image/*'],
              // 最多可上传几个文件,默认为 100
              maxNumberOfFiles: 10,
              server: 'xxxxx',//后台接口完整地址
              // 超时时间,默认为 10 秒
              timeout: 5 * 1000, // 5 秒
              // 单个文件上传失败
              onFailed(file, res) {   // TS 语法
                // onFailed(file, res) {           // JS 语法
                console.log(`${file.name} 上传失败`, res)
              },

              // 上传错误,或者触发 timeout 超时
              onError(file, err, res) {  // TS 语法
                // onError(file, err, res) {               // JS 语法
                console.log(`${file.name} 上传出错`, err, res)
              },
              onSuccess(file, res) {  // TS 语法
                console.log(`${file.name} 上传成功`, res)
              },
              customInsert(res, insertFn) {  // TS 语法
                // customInsert(res, insertFn) {                  // JS 语法
                // res 即服务端的返回结果
                console.log(res, '返回')
                // 从 res 中找到 url alt href ,然后插入图片
                insertFn(res.Data.url, res.Data.alt, res.Data.href)
              },
            }
          },
        },

//基础方法

onCreated(editor) {
       this.editor = Object.seal(editor); // 【注意】一定要用 Object.seal() 否则会报错
       //点击编辑时,富文本内容回显
       this.editor.setHtml(xxxx)//v-model绑定的字段    },
     //输入的文本
     onChange(editor) {
       // console.log("onChange", editor.getHtml()); // onChange 时获取编辑器最新内容
     },