共用弹框之新增编辑(二)-封装的wangeditor富文本组件

共用弹框之新增/编辑(二)-封装的wangeditor富文本组件

封装的wangeditor富文本组件

src/views/components/Editor/index.vue

<template>
    <div ref="editorRef"></div>
</template>

<script lang="ts">
import {
	defineComponent,
	onMounted,
	ref,
	reactive,
	toRefs,
	nextTick,
	onBeforeUnmount,
	watch, onUnmounted
} from 'vue';
import E from 'wangeditor';

export default defineComponent({
    name: 'editor',
    components: {},
    props: ['value'],
    setup(props, context) {
        const state = reactive({
            editorRef: null,
            editor: null
        });
       const watchValue= watch(props, p => {
            p.value &&
                state.editor &&
                state.editor.txt.html(`<p>${props.value}</p>`);
            !p.value && state.editor && state.editor.txt.html(`<p></p>`);
        })
            onMounted(() => {
                nextTick(() => {
                    state.editor = new E(state.editorRef);
                    state.editor.config.onchange = function(html) {
                        //监控变化,同步更新到父组件
                        context.emit('setHtml', html);
                        context.emit('setText', state.editor.txt.text());
                    };
                    state.editor.create();
                });
            });
       onUnmounted(()=>{
	       watchValue()
       })
        return {
            ...toRefs(state)
        };
    }
});
</script>
<style scoped lang="scss">
// :deep(.w-e-toolbar) {
//     z-index: 1000 !important;
// }

// :deep(.w-e-text-container) {
//     z-index: 1000 !important;
// }
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值