共用弹框之新增/编辑(二)-封装的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>