参考文档:vue-ueditor-wrap - Vue + UEditor + v-model双向绑定Vue + UEditor + v-model双向绑定https://haochuan9421.github.io/vue-ueditor-wrap/#/home

1.安装组件

npm i vue-ueditor-wrap@3.0.8

2.下载 UEditor

下载链接:https://pan.baidu.com/s/1WEhVbXI_iHW8yU9O_z2hmQ?pwd=f9xo

放在public目录下

3.注册组件

main.ts

import VueUeditorWrap from 'vue-ueditor-wrap';
import { createApp } from "vue";
const app = createApp(App);
app.use(VueUeditorWrap)

4.封装组件

/src/components/ueditor/index.vue

<template>
    <vue-ueditor-wrap v-model="state.editorVal" :config="editorConfig" :editor-id="props.editorId" @ready="ueready"
        @input="handleInput" claas="ueditor-wrap"></vue-ueditor-wrap>
</template>
  
<script setup lang="ts" name="Ueditor">
import { ref, onMounted, reactive, watch, getCurrentInstance } from 'vue'

// 定义父组件传过来的值
const props = defineProps({
    editorId: {
        type: String,
        default: 'editor1'
    },
    // 双向绑定,用于获取 editor.getHtml()
    getHtml: String,
})

// 定义子组件向父组件传值/事件
const emit = defineEmits(['update:getHtml']);

const state = reactive({
    editorVal: props.getHtml,
});
const { proxy }: any = getCurrentInstance();
const editorConfig = {
    UEDITOR_HOME_URL: './UEditor/', // 访问 UEditor 静态资源的根路径,可参考常见问题1
}

function ueready(edt) {
    //WordPaster快捷键 Ctrl + V
    edt.addshortcutkey({
        "wordpaster": "ctrl+86"
    });
}
const handleInput = (val: string) => {
    // console.log("handleInput===", val);
    emit('update:getHtml', val);
};

watch(
    () => state.editorVal,
    (val) => {
        emit('update:getHtml', val);
    },
    {
        deep: true,
    }
);
</script>

<style scoped lang="scss"></style>

5.页面引用组件

<Ueditor editorId="Ueditor1" v-model:get-html="ruleForm.content"></Ueditor>
<Ueditor editorId="Ueditor2" v-model:get-html="ruleForm.wxcontent"></Ueditor>

import Ueditor from '/@/components/ueditor/index.vue';

components: {
	Ueditor
},

效果图

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐