vue2和vue3引用ueditor的区别

官方文档入口

UEditor Docs

vue2使用方式

UE.vue组件

<template>
  <div>
    <script id="editor" type="text/plain"></script>
    <Upload v-if="isupload" :config="{total:9}" :isupload="isupload" @returnImgs="returnImgsFunc">上传图片</Upload>
  </div>
</template>
<script>
  import Upload from '@/components/file/Upload';
  export default {
    components:{Upload},
    name: 'ue',
    data() {
      return {
        editor: null,
        isupload:false,
        hasCallback: false,
        callback: null,
        this_config:{
          //不需要工具栏漂浮
          autoFloatEnabled:false
        }
      }
    },
    props: {
      text: String,
      config: Object
    },
    created() {
      /*富文本框的默认选择图片方式,改成自定义的选择方式*/
      window.openUpload = this.openUpload;
    },
    watch:{

    },
    mounted() {

      Object.assign(this.this_config,this.config);
      this.editor = window.UE.getEditor('editor', this.this_config);
      this.editor.addListener('ready', (e) => {
        this.editor.setContent(this.text);
      });

      /*监听富文本内容变化,有变化传给调用组件的页面*/
      this.editor.addListener('contentChange', (e) => {
        this.$emit('contentChange',this.editor.getContent());
      });
    },
    methods: {

      /*获取富文本框内容*/
      getUEContent() {
        return this.editor.getContent()
      },

      /*打开选择图片*/
      openUpload: function(callback) {
        this.isupload = true;
        if (callback) {
          this.hasCallback = true;
          this.callback = callback;
        }
      },

      /*获取图片*/
      returnImgsFunc(e) {
        if (e != null) {
          this.hasCallback && this.callback(e);
        }
        this.isupload = false;
      },
    },

    /*销毁*/
    destroyed() {
      this.editor.destroy()
    }
  }
</script>

引用index.vue

<template>
 <Uediter :text="form.model.content" :config="ueditor.config" ref="ue" @contentChange="contentChangeFunc"></Uediter>
</template>

<script>
import Uediter from '@/components/UE.vue';
export default {
  components: {
    Uediter,
  },
  data() {
    return {
      /*富文本框配置*/
      ueditor: {
        text: '',
        config: {
          initialFrameWidth: 400,
          initialFrameHeight: 500
        }
      },
    };
  },
  created() {},
  inject: ['form'],
  methods:{
    /*获取富文本内容*/
    contentChangeFunc(e){
      this.form.model.content=e;
    },

  }
};
</script>

<style></style>

vue3使用方式

UE.vue

<template>
	<div>
		<!-- <vue-ueditor-wrap v-model="msg" :config="editorConfig" editor-id="editor-demo-01" @beforeInit="addCustomButtom" @ready="ready"></vue-ueditor-wrap> -->
		<vue-ueditor-wrap v-model="msg" :config="editorConfig" editor-id="editor-demo-01" @ready="ready"></vue-ueditor-wrap>
		<Upload v-if="isupload" :config="{ total: 9 }" :isupload="isupload" @returnImgs="returnImgsFunc">上传图片</Upload>
	</div>
</template>
<script>
import { reactive, toRefs, ref, watch } from 'vue';
import Upload from '@/components/file/Upload.vue';
export default {
	components: {
		Upload
	},
	props: ['text'],
	setup(props, { emit }) {
		const state = reactive({
			msg: props.text,
			editor: null,
			isupload: false,
			hasCallback: false,
			callback: null,
			this_config: {
				//不需要工具栏漂浮
				autoFloatEnabled: false,
			},
		});
		watch(
			() => state.msg,
			(v) => {
				emit("contentChange",v)
			}
		);
		return {
			...toRefs(state),
		};
	},
	methods: {
		ready(){
			window.openUpload = this.openUpload;
		},
		// addCustomButtom(editorId){
		// 	let _this = this;
        //     window.UE.registerUI('test-button', function (editor, uiName) {
        //         // 注册按钮执行时的 command 命令,使用命令默认就会带有回退操作
        //         editor.registerCommand(uiName, {
        //             execCommand: () => {
        //                 /* _this.imageList = [];
        //                 _this.dialogVisible = true; */
        //                 _this.openUpload();
        //                 _this.editorHandler = editor;
        //             }
        //         })
        //         // 创建一个 button
        //         var btn = new window.UE.ui.Button({
        //             // 按钮的名字
        //             name: uiName,
        //             // 提示
        //             title: '图片上传',
        //             // 需要添加的额外样式,可指定 icon 图标,图标路径参考常见问题 2
        //             cssRules: "background-position: -380px 0;",
        //             // 点击时执行的命令
        //             onclick: function () {
        //                 // 这里可以不用执行命令,做你自己的操作也可
        //                 editor.execCommand(uiName)
        //             }
        //         })

        //         // 当点到编辑内容上时,按钮要做的状态反射
        //         editor.addListener('selectionchange', function () {
        //         var state = editor.queryCommandState(uiName)
        //             if (state === -1) {
        //                 btn.setDisabled(true)
        //                 btn.setChecked(false)
        //             } else {
        //                 btn.setDisabled(false)
        //                 btn.setChecked(state)
        //             }
        //         })
        //         // 因为你是添加 button,所以需要返回这个 button
        //         return btn
        //     }, 46 /* 指定添加到工具栏上的哪个位置,默认时追加到最后 */, editorId /* 指定这个 UI 是哪个编辑器实例上的,默认是页面上所有的编辑器都会添加这个按钮 */)
		// },
		/*打开选择图片*/
		openUpload: function(callback) {
			this.isupload = true;
			if (callback) {
				this.hasCallback = true;
				this.callback = callback;
			}
		},

		/*获取图片*/
		returnImgsFunc(e) {
			if (e != null) {
				this.hasCallback && this.callback(e);
			}
			this.isupload = false;
		},
	}
};
</script>

index.vue

<template>
<Uediter :text="form.model.content" :config="ueditor.config" ref="ue"
					@contentChange="contentChangeFunc"></Uediter>
</template>

<script>
import Uediter from '@/components/UE.vue';
export default {
	components: {
		/*编辑器*/
		Uediter,
	},
	data() {
		return {
			/*富文本框配置*/
			ueditor: {
				text: '',
				config: {
					initialFrameWidth: 400,
					initialFrameHeight: 500
				}
			},
		};
	},
	created() {},
	inject: ['form'],
	methods: {

		/*获取富文本内容*/
		contentChangeFunc(e) {
			this.form.model.content = e;
		},

	}
};
</script>

<style></style>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值