vue中使用wangeditor

项目中用到了富文本框,选来选去选择了wangeditor,先写了demo,用起来还算比较简单

用法

安装

npm install @wangeditor/editor --save
npm install @wangeditor/editor-for-vue --save

空白编辑器

<template>
  <div id="app">
    <div style="border: 1px solid #ccc;">
        <Toolbar
            style="border-bottom: 1px solid #ccc"
            :editor="editor"
            :defaultConfig="toolbarConfig"
            :mode="mode"
        />
        <Editor
            style="height: 500px; overflow-y: hidden;"
            v-model="html"
            @onChange="lisChange($event)"
            :defaultConfig="editorConfig"
            :mode="mode"
            @onCreated="onCreated"
        />
    </div>
  </div>
</template>
 
<script>
 
import '@wangeditor/editor/dist/css/style.css'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
 
export default({
    components: { Editor, Toolbar },
    data() {
        return {
            editor: null,
            html: '<p>hello</p>',
            toolbarConfig: { },
            editorConfig: { placeholder: '请输入内容...' },
            mode: 'simple', // or 'simple'
        }
    },
    methods: {
        onCreated(editor) {
            this.editor = Object.seal(editor) // 一定要用 Object.seal() ,否则会报错
        },
        lisChange(e){
          console.log(e.getHtml())
        }
    },
    mounted() {
        
    },
    beforeDestroy() {
        const editor = this.editor
        if (editor == null) return
        editor.destroy() // 组件销毁时,及时销毁编辑器
    }
})
</script>
 
 
<style>
 
</style>

其他用到的配置

菜单不显示某个按钮

toolbarConfig: {
        excludeKeys: [
          'fullScreen',//不显示全屏
          'insertVideo',//不显示插入视频
        ]
      },

上传图片

editorConfig: {
        placeholder: '请输入内容...',
        MENU_CONF: {
          // 配置上传图片
          uploadImage: {
            customUpload: this.uploadImageMe // this.uploadImageMe 是 methods 中的一个普通方法
          },
        }
      },
//上传文件配置
    uploadImageMe(file, insertFn){
      // file 即选中的文件
      // 自己实现上传,并得到图片 url alt href
      let name = file.name;
      let suffix = file.type.split("/")[1];
      name = name + '.' + suffix;
 
      let formdata = new FormData()
      formdata.append("file", file)  
        
        //上传方法
      uploadImg(formdata).then(res => {
        // 最后插入图片
        insertFn(res.url , res.name, res.url )
      })
 
    },

其他API

判断是否为空

this.editor.isEmpty() 

有标签就不算空,所以我判断是否为空用的是

this.editor.getText()=='' //this.editor.getText() 获取纯文本

获取toolbar所有key

this.editor.getAllMenuKeys()

 

posted @ 2023-03-16 17:53  土小狗  阅读(442)  评论(0编辑  收藏  举报