vue项目添加百度富文本编辑器(ueditor)

<template>
  <div>
    <script id="editor" type="text/plain"></script>
  </div>
</template>

<script>
  export default {
    name: "UE",
    data() {
      return {
        editor: null
      }
    },
    props: {
      defaultMsg: {
        type: String
      },
      config: {
        type: Object
      }
    },
    mounted() {
      const _this = this;
      this.editor = UE.getEditor('editor', this.config); // 初始化UE
      this.editor.addListener("ready", function () {
        _this.editor.setContent(_this.defaultMsg); // 确保UE加载完成后,放入内容。
      });
    },
    watch: {
      defaultMsg(newVal) {
        this.editor.setContent(newVal);
      }
    },
    methods: {
      getUEContent() { // 获取内容方法
        return this.editor.getContent()
      }
    },
    destroyed() {
      this.editor.destroy();
    }
  }
</script>

<style scoped>

</style>

使用百度富文本

第一步:下载富文本,下载链接:http://ueditor.baidu.com/website/

第二步:把你的下载的富文本添加到项目中,然后在main.js中引用相关

import '../static/ueditor/ueditor.config'
import '../static/ueditor/ueditor.all.min'
import '../static/ueditor/lang/zh-cn/zh-cn'
import '../static/ueditor/ueditor.parse.min'
本人是放在static目录下了,视你自己的情况放(记得修改目录地址)

第三步:把ueditor分装成组件便于以后使用

分装代码:

<template>
  <div>
    <script id="editor" type="text/plain"></script>
  </div>
</template>

<script>
  export default {
    name: "UE",
    data() {
      return {
        editor: null
      }
    },
    props: {
      defaultMsg: {
        type: String
      },
      config: {
        type: Object
      }
    },
    mounted() {
      const _this = this;
      this.editor = UE.getEditor('editor', this.config); // 初始化UE
      this.editor.addListener("ready", function () {
        _this.editor.setContent(_this.defaultMsg); // 确保UE加载完成后,放入内容。
      });
    },
    methods: {
      getUEContent() { // 获取内容方法
        return this.editor.getContent()
      }
    },
    destroyed() {
      this.editor.destroy();
    }
  }
</script>

<style lang="scss">
  #editor {
    line-height: 1;
  }
</style>

第四步:引用
import ueditor from '@/components/ue'  导入组件
components: { // 定义组件名称
  ueditor
},
<ueditor :defaultMsg=defaultMsg :config=config ref="ue"></ueditor> // 组件引用

data(){ // 设置数据
defaultMsg: '', // 富文本默认提示信息
/*富文本配置项*/
config: {
  initialFrameWidth: null, // 宽度
  initialFrameHeight: 350 // 高度
},
}
this.$refs.ue.getUEContent(); // 获取富文本内容


后续:后续发现很多相关的问题,例如图片上传和富文本放在弹窗中,而弹窗使用的是一个富文本。这就导致添加和编辑的时候富文本的值回显有问题。
下面给出本人的解决方案:
首先我们对分装的富文本进行了修改:
<template>
  <div>
    <script id="editor"
            type="text/plain"></script>
  </div>
</template>

<script>
export default {
  name: "UE",
  data () {
    return {
      editor: null
    }
  },
  props: {
    defaultMsg: {
      type: String,
      default: ''
    },
    config: {
      type: Object
    }
  },
  mounted () {
    const _this = this;
    this.editor = UE.getEditor('editor', this.config); // 初始化UE
    this.editor.addListener("ready", function () {
      _this.editor.setContent(_this.defaultMsg); // 确保UE加载完成后,放入内容。
    });
  },
  watch:{
    defaultMsg (newVal) {
      this.editor.setContent(newVal);
    }
  },
  methods: {
    getUEContent () { // 获取内容方法
      return this.editor.getContent()
    },
    setText (con) {
      const _this = this;
      _this.editor.setContent(con);
    }
  },
  destroyed () {
    this.editor.destroy();
  }
}
</script>

<style scoped>
</style>

红色字问修改部分。

下面说一下逻辑页面的实现。

在弹窗关闭的时候添加:

closeRzDialog() {
      this.setUEContent("");
      this.addRzDialog = false;
    },
setUEContent (data) {
      this.$refs.ue.setText(data);
    },

在关闭弹窗的时候把值清空一下。

导致这个问题出现是因为:vue为双向绑定的,一开始添加了watch监听默认的

defaultMsg 值

只能解决两个弹层切换赋值的问题。并不能解决添加弹窗里面添加了内容,再次打开新增清空上次输入值的问题。所以有加了一个

setText方法。
关闭弹窗的时候设置一下值为空值。这样间接的算是完成了功能吧。
如果你使用的是element中的dialog组件也可以使用

官方给出的属性
destroy-on-close   关闭时销毁Dialog 中的元素   boolean  —false
这个属性设置ture也能实现。就不需要每次关闭的时候去设置空值了。但是对渲染不好。


下面是个人的建议。一开始就不要使用这个插件。本人后来又找了一个富文本的vue插件。

Vue-Quill-Editor

下面使用方式,我就不再写了,懒

介绍一个写的比较详细的

https://www.cnblogs.com/wjlbk/p/12884661.html

有兴趣的同学研究吧
  • 18
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值