12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <script setup lang="ts">
- import "@wangeditor/editor/dist/css/style.css"; // 引入 css
- import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
- import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
- import { onBeforeUnmount, ref, shallowRef, onMounted } from "vue";
- defineOptions({
- name: "Editor"
- });
- const mode = "default";
- // 编辑器实例,必须用 shallowRef
- const editorRef = shallowRef();
- // 内容 HTML
- const valueHtml = ref("<p>hello</p>");
- // 模拟 ajax 异步获取内容
- onMounted(() => {
- setTimeout(() => {
- valueHtml.value = "<p>模拟 Ajax 异步设置内容</p>";
- }, 1500);
- });
- const toolbarConfig: any = { excludeKeys: "fullScreen" };
- const editorConfig = { placeholder: "请输入内容..." };
- // 组件销毁时,也及时销毁编辑器
- onBeforeUnmount(() => {
- const editor = editorRef.value;
- if (editor == null) return;
- editor.destroy();
- });
- const handleCreated = editor => {
- editorRef.value = editor; // 记录 editor 实例,重要!
- };
- </script>
- <template>
- <el-card>
- <template #header>
- <div class="card-header">
- <span class="font-medium">
- 编辑器组件,采用开源的
- <el-link
- href="https://www.wangeditor.com"
- target="_blank"
- :icon="useRenderIcon('edit')"
- style="font-size: 16px; margin: 0 4px 5px"
- >
- Wangeditor
- </el-link>
- </span>
- </div>
- </template>
- <div class="wangeditor">
- <Toolbar
- style="border-bottom: 1px solid #ccc"
- :editor="editorRef"
- :defaultConfig="toolbarConfig"
- :mode="mode"
- />
- <Editor
- style="height: 500px; overflow-y: hidden"
- v-model="valueHtml"
- :defaultConfig="editorConfig"
- :mode="mode"
- @onCreated="handleCreated"
- />
- </div>
- </el-card>
- </template>
|