index.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <template>
  2. <PageWrapper title="MarkDown组件示例">
  3. <a-button @click="toggleTheme" class="mb-2" type="primary"> 黑暗主题 </a-button>
  4. <a-button @click="clearValue" class="mb-2" type="default"> 清空内容 </a-button>
  5. <MarkDown
  6. v-model:value="value"
  7. @change="handleChange"
  8. ref="markDownRef"
  9. placeholder="这是占位文本"
  10. />
  11. </PageWrapper>
  12. </template>
  13. <script lang="ts">
  14. import { defineComponent, ref, unref } from 'vue';
  15. import { MarkDown, MarkDownActionType } from '/@/components/Markdown';
  16. import { PageWrapper } from '/@/components/Page';
  17. export default defineComponent({
  18. components: { MarkDown, PageWrapper },
  19. setup() {
  20. const markDownRef = ref<Nullable<MarkDownActionType>>(null);
  21. const valueRef = ref(`
  22. # title
  23. # content
  24. `);
  25. function toggleTheme() {
  26. const markDown = unref(markDownRef);
  27. if (!markDown) return;
  28. const vditor = markDown.getVditor();
  29. vditor.setTheme('dark');
  30. }
  31. function handleChange(v: string) {
  32. valueRef.value = v;
  33. }
  34. function clearValue() {
  35. valueRef.value = '';
  36. }
  37. return {
  38. value: valueRef,
  39. toggleTheme,
  40. markDownRef,
  41. handleChange,
  42. clearValue,
  43. };
  44. },
  45. });
  46. </script>