diff --git a/src/renderer/context/embed.ts b/src/renderer/context/embed.ts index 8865ede3..b8b42312 100644 --- a/src/renderer/context/embed.ts +++ b/src/renderer/context/embed.ts @@ -21,7 +21,7 @@ export const IFrame = defineComponent({ iframeProps: Object as PropType, onLoad: Function as PropType<(iframe: HTMLIFrameElement) => void> }, - setup (props) { + setup (props, { expose }) { const url = ref('') const iframe = ref() @@ -62,6 +62,12 @@ export const IFrame = defineComponent({ props.onLoad?.(frame) } + expose({ + reload: () => { + iframe.value?.contentWindow?.location.reload() + } + }) + return () => url.value ? h('iframe', { ref: iframe, src: url.value || undefined, diff --git a/src/renderer/plugins/markdown-luckysheet.ts b/src/renderer/plugins/markdown-luckysheet.ts index 2461c80f..5ca6bb56 100644 --- a/src/renderer/plugins/markdown-luckysheet.ts +++ b/src/renderer/plugins/markdown-luckysheet.ts @@ -1,4 +1,4 @@ -import { defineComponent, h, ref, watch } from 'vue' +import { computed, defineComponent, h, ref, watch } from 'vue' import Markdown from 'markdown-it' import { Plugin } from '@fe/context/plugin' @@ -200,11 +200,16 @@ const LuckyComponent = defineComponent({ setup (props) { logger.debug('setup', props) const srcdoc = ref('') + const refIFrame = ref() const update = () => { srcdoc.value = buildSrcdoc(props.repo!, props.path!, false) } + const reload = () => { + refIFrame.value.reload() + } + watch(props, update, { immediate: true }) const button = (text: string, onClick: any) => h('button', { @@ -221,6 +226,7 @@ const LuckyComponent = defineComponent({ }, [ // button('全屏查看', () => 0), + button('重载', reload), button('新窗口编辑', () => { const html = buildSrcdoc(props.repo!, props.path!, true) env.openWindow(buildSrc(html, '编辑表格', false, false), '_blank', { alwaysOnTop: false }) @@ -228,6 +234,7 @@ const LuckyComponent = defineComponent({ ] ), h(IFrame, { + ref: refIFrame, html: srcdoc.value, debounce: 1000, iframeProps: {