vue wangeditor配置

wangeditor富文本编辑器配置
1.下载

npm i wangeditor --save

2.使用

  <div>
    <div id="e" ref="editor"></div>
  </div>
import E from 'wangeditor'
export default {
  components: {},
  model: {
    prop: 'desc',
    event: 'change'
  },
  props: {
    desc: String,

  },
  data() {
    return {
      content: '',
      editor: ''
    }
  },
  computed: {},
  watch: {
    desc: {
      immediate: true,
      handler(value) {
        //  console.log('desc', value)
        //判断父组件传递过来的值跟当前编辑器内容是否一样
        if (
          value != this.editor?.txt?.html() &&
          value != '' &&
          this.editor != ''
        ) {
          this.editor.txt.html(value)
        }
        if (value) {
          this.content = value
        }
      }
    }
    //接收父组件传递过来的值
  },
  created() {},
  mounted() {
    this.initE()
  },
  activated() {},
  methods: {
    //清除编辑器缓存 使用ref调用这个方法
    clearFun() {
      this.editor.txt.clear()
    },
    //初始化
    initE() {
      this.editor = new E(this.$refs.editor) //使用这个初始化,可以在同一界面创建多个编辑器
      // this.editor = new E('#e') //用这个。到用两个编辑框的时候会出现 :初始化节点已存在编辑器实例,无法重复创建编辑
      let that = this
      this.editor.config.lineHeights = ['1', '1.15', '1.6', '2', '2.5', '3'] //行高
      //上传图片
      this.editor.config.customUploadImg = function(resultFiles, insertImgFn) {
        // resultFiles 是 input 中选中的文件列表
        // insertImgFn 是获取图片 url 后,插入到编辑器的方法
        console.log(resultFiles)
        that
          .uploadImgReq(resultFiles[0])//自己封装的请求
          .then(res => {
            insertImgFn(that.$img(res))
            console.log(res)
          })
          .catch(err => {
            console.log(err)
          })
        // 上传图片,返回结果,将图片插入到编辑器中
      }
      //上传视频
      this.editor.config.customUploadVideo = function(
        resultFiles,
        insertVideoFn
      ) {
        // resultFiles 是 input 中选中的文件列表
        // insertVideoFn 是获取视频 url 后,插入到编辑器的方法
        that
          .uploadvideoReq(resultFiles[0])
          .then(res => {
            // 上传视频,返回结果,将视频地址插入到编辑器中
            insertVideoFn(that.$img(res))
            console.log(res)
          })
          .catch(err => {
            console.log(err)
          })
      }
      this.editor.config.pasteFilterStyle = false
      this.editor.config.menus = [
        'head', // 标题
        'bold', // 粗体
        'fontSize', // 字号
        // 'fontName', // 字体
        'italic', // 斜体
        'underline', // 下划线
        'strikeThrough', // 删除线
        'foreColor', // 文字颜色
        'backColor', // 背景颜色
        'lineHeight', //行高
        'link', // 插入链接
        'list', // 列表
        'justify', // 对齐方式
        'quote', // 引用
        'emoticon', // 表情
        'image', // 插入图片
        'table', // 表格
        'undo', // 撤销
        'redo' // 重复
        // 'video',//视频
      ]
      this.editor.config.uploadImgMaxSize = 1 * 1024 * 1024 //限制图片上传大小 1M
	  this.editor.config.showFullScreen = false //全屏按钮
      this.editor.config.showLinkImg = false//隐藏网络图片
      this.editor.config.showLinkVideo = false//隐藏网络视频
      this.editor.create()
      //判断model是否传值,如果有就添加,没有就清除  !!一定要在editor.create()之后使用
      if (this.content) {
        this.editor.txt.html(this.content)
      }else{
        this.editor.txt.clear()
      }
    },
    // 图片上传
    async uploadImgReq(formdata) {
      try {
        let imgRes = await this.request({
          url: '/uploads/files',
          method: 'post',
          dataType: 'blob',
          loading: true,
          data: {
            img: formdata
          }
        })
        //  console.log(imgRes.content.img)
        return Promise.resolve(imgRes.content.img)
      } catch (error) {
        console.log(error)
        return Promise.reject(error)
      }
    },
    // 视频上传
    async uploadvideoReq(formdata) {
      try {
        let imgRes = await this.request({
          url: '',
          method: 'post',
          dataType: 'blob',
          loading: true,
          data: {
            img: formdata
          }
        })
        return Promise.resolve(imgRes.content.img)
      } catch (error) {
        console.log(error)
        return Promise.reject(error)
      }
    }
  }
}

3.组件使用

 <x-wangeditor v-model="formData.intro" ref="xwangeditor"> </x-wangeditor>

ps:我这个是注册的全局组件所以是x-wangeditor标签,如果不会注册的全局组件,也可以像组件一样引入使用,都是一样的。同时我这wangeditor是配合vue的keep-alive使用的。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值