tmagic-editor/docs/api/form/submit-form.html
2026-06-04 09:22:54 +00:00

163 lines
91 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>submitForm 函数 | tmagic-editor</title>
<meta name="description" content="页面可视化平台">
<meta name="generator" content="VitePress v2.0.0-alpha.17">
<link rel="preload stylesheet" href="/tmagic-editor/docs/assets/style.B2Y-cHQK.css" as="style">
<link rel="preload stylesheet" href="/tmagic-editor/docs/vp-icons.css" as="style">
<script type="module" src="/tmagic-editor/docs/assets/app.B3MGcKp5.js"></script>
<link rel="preload" href="/tmagic-editor/docs/assets/inter-roman-latin.Cy4MYw_J.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/tmagic-editor/docs/assets/chunks/theme.WuWAEVfw.js">
<link rel="modulepreload" href="/tmagic-editor/docs/assets/chunks/framework.V2ssSR2R.js">
<link rel="modulepreload" href="/tmagic-editor/docs/assets/api_form_submit-form.md.BkueFK3n.lean.js">
<meta name="theme-color" content="#646cff">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-52085faa><!--[--><!--]--><!--[--><span tabindex="-1" data-v-002a3b7b></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-002a3b7b>Skip to content</a><!--]--><!----><header class="VPNav" data-v-52085faa data-v-66bfbe5f><div class="VPNavBar has-sidebar top" data-v-66bfbe5f data-v-e3720e23><div class="wrapper" data-v-e3720e23><div class="container" data-v-e3720e23><div class="title" data-v-e3720e23><div class="VPNavBarTitle has-sidebar" data-v-e3720e23 data-v-0cf55604><a class="title" href="/tmagic-editor/docs/" data-v-0cf55604><!--[--><!--]--><!--[--><img class="VPImage logo" src="./favicon.png" alt data-v-9c21079f><!--]--><span data-v-0cf55604>tmagic-editor</span><!--[--><!--]--></a></div></div><div class="content" data-v-e3720e23><div class="content-body" data-v-e3720e23><!--[--><!--]--><div class="VPNavBarSearch search" data-v-e3720e23 data-v-aeb47f76><!--[--><button type="button" class="VPNavBarSearchButton" aria-label="Search" aria-keyshortcuts="/ control+k meta+k" data-v-aeb47f76 data-v-9cf61dd5><span class="vpi-search" aria-hidden="true" data-v-9cf61dd5></span><span class="text" data-v-9cf61dd5>Search</span><span class="keys" aria-hidden="true" data-v-9cf61dd5><kbd class="key-cmd" data-v-9cf61dd5></kbd><kbd class="key-ctrl" data-v-9cf61dd5>Ctrl</kbd><kbd data-v-9cf61dd5>K</kbd></span></button><!----><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-e3720e23 data-v-ec5ae824><span id="main-nav-aria-label" class="visually-hidden" data-v-ec5ae824> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/tmagic-editor/docs/guide/" tabindex="0" data-v-ec5ae824 data-v-43d45074><!--[--><span data-v-43d45074>文档</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/tmagic-editor/docs/api/editor/props.html" tabindex="0" data-v-ec5ae824 data-v-43d45074><!--[--><span data-v-43d45074>Editor API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/tmagic-editor/docs/runtime-api/core/app.html" tabindex="0" data-v-ec5ae824 data-v-43d45074><!--[--><span data-v-43d45074>Runtime API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/tmagic-editor/docs/form-config/fields/text.html" tabindex="0" data-v-ec5ae824 data-v-43d45074><!--[--><span data-v-43d45074>表单配置</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Tencent/tmagic-editor/releases" target="_blank" rel="noreferrer" tabindex="0" data-v-ec5ae824 data-v-43d45074><!--[--><span data-v-43d45074>更新日志</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://tencent.github.io/tmagic-editor/playground/index.html" target="_blank" rel="noreferrer" tabindex="0" data-v-ec5ae824 data-v-43d45074><!--[--><span data-v-43d45074>Playground</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-e3720e23 data-v-6416f7b5><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6416f7b5 data-v-7ddf7f6f data-v-8006726c><span class="check" data-v-8006726c><span class="icon" data-v-8006726c><!--[--><span class="vpi-sun sun" data-v-7ddf7f6f></span><span class="vpi-moon moon" data-v-7ddf7f6f></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-e3720e23 data-v-77e51d27 data-v-03e62622><!--[--><a class="VPSocialLink no-icon" href="https://github.com/Tencent/tmagic-editor" aria-label="github" target="_blank" rel="me noopener" data-v-03e62622 data-v-e80c6f77><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-e3720e23 data-v-b1acd709 data-v-4b9197ed><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4b9197ed><span class="vpi-more-horizontal icon" data-v-4b9197ed></span></button><div class="menu" data-v-4b9197ed><div class="VPMenu" data-v-4b9197ed data-v-a395f093><!----><!--[--><!--[--><!----><div class="group" data-v-b1acd709><div class="item appearance" data-v-b1acd709><p class="label" data-v-b1acd709>Appearance</p><div class="appearance-action" data-v-b1acd709><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-b1acd709 data-v-7ddf7f6f data-v-8006726c><span class="check" data-v-8006726c><span class="icon" data-v-8006726c><!--[--><span class="vpi-sun sun" data-v-7ddf7f6f></span><span class="vpi-moon moon" data-v-7ddf7f6f></span><!--]--></span></span></button></div></div></div><div class="group" data-v-b1acd709><div class="item social-links" data-v-b1acd709><div class="VPSocialLinks social-links-list" data-v-b1acd709 data-v-03e62622><!--[--><a class="VPSocialLink no-icon" href="https://github.com/Tencent/tmagic-editor" aria-label="github" target="_blank" rel="me noopener" data-v-03e62622 data-v-e80c6f77><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-e3720e23 data-v-bd3703a2><span class="container" data-v-bd3703a2><span class="top" data-v-bd3703a2></span><span class="middle" data-v-bd3703a2></span><span class="bottom" data-v-bd3703a2></span></span></button></div></div></div></div><div class="divider" data-v-e3720e23><div class="divider-line" data-v-e3720e23></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-52085faa data-v-0d424459><div class="container" data-v-0d424459><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-0d424459><span class="vpi-align-left menu-icon" data-v-0d424459></span><span class="menu-text" data-v-0d424459>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-0d424459 data-v-9e866da0><button data-v-9e866da0>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-52085faa data-v-b300e040><div class="curtain" data-v-b300e040></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-b300e040><span class="visually-hidden" id="sidebar-aria-label" data-v-b300e040> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-cd5b1edc><section class="VPSidebarItem level-0" data-v-cd5b1edc data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h2 class="text" data-v-edbe517d>编辑器</h2><!----></div><div class="items" data-v-edbe517d><!--[--><section class="VPSidebarItem level-1" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>Editor组件</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/props.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>props</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/slots.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>slots</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/events.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>events</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>editorService</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/editorServiceMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/editorServiceEvents.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>propsService</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/propsServiceMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/propsServiceEvents.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>historyService</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/historyServiceMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/historyServiceEvents.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/eventsServiceMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>eventsService</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/uiServiceMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>uiService</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/codeBlockServiceMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>codeBlockService</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/componentListServiceMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>componentListService</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/storageServiceMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>storageService</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-cd5b1edc><section class="VPSidebarItem level-0 has-active" data-v-cd5b1edc data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h2 class="text" data-v-edbe517d>表单</h2><!----></div><div class="items" data-v-edbe517d><!--[--><section class="VPSidebarItem level-1" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>Form组件</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-props.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>props</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-methods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>methods</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-events.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>events</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>FormDialog组件</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-dialog-props.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>props</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-dialog-methods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>methods</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-dialog-events.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>events</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 has-active" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>工具函数</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/submit-form.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>submitForm</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-cd5b1edc><section class="VPSidebarItem level-0" data-v-cd5b1edc data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h2 class="text" data-v-edbe517d>表格</h2><!----></div><div class="items" data-v-edbe517d><!--[--><section class="VPSidebarItem level-1" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>Table组件</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/table/props.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>props</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/table/methods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>methods</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/table/events.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>events</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-cd5b1edc><section class="VPSidebarItem level-0" data-v-cd5b1edc data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h2 class="text" data-v-edbe517d>stage</h2><!----></div><div class="items" data-v-edbe517d><!--[--><section class="VPSidebarItem level-1" data-v-edbe517d data-v-edbe517d><div class="item" role="button" tabindex="0" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><h3 class="text" data-v-edbe517d>StageCore</h3><!----></div><div class="items" data-v-edbe517d><!--[--><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/stage/coreMethods.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-edbe517d data-v-edbe517d><div class="item" data-v-edbe517d><div class="indicator" data-v-edbe517d></div><a class="VPLink link link" href="/tmagic-editor/docs/api/stage/coreEvents.html" data-v-edbe517d><!--[--><p class="text" data-v-edbe517d>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-52085faa data-v-e4a435e4><div class="VPDoc has-sidebar has-aside" data-v-e4a435e4 data-v-e240b221><!--[--><!--]--><div class="container" data-v-e240b221><div class="aside" data-v-e240b221><div class="aside-curtain" data-v-e240b221></div><div class="aside-container" data-v-e240b221><div class="aside-content" data-v-e240b221><div class="VPDocAside" data-v-e240b221 data-v-29ae77ab><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-29ae77ab data-v-9a0a5036><div class="content" data-v-9a0a5036><div class="outline-marker" data-v-9a0a5036></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-9a0a5036>On this page</div><ul class="VPDocOutlineItem root" data-v-9a0a5036 data-v-97ea2a1e><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-29ae77ab></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-e240b221><div class="content-container" data-v-e240b221><!--[--><!--]--><main class="main" data-v-e240b221><div style="position:relative;" class="vp-doc _tmagic-editor_docs_api_form_submit-form" data-v-e240b221><div><h1 id="submitform-函数" tabindex="-1">submitForm 函数 <a class="header-anchor" href="#submitform-函数" aria-label="Permalink to “submitForm 函数”"></a></h1><p>以命令式方式调用 <code>MForm</code> 组件完成一次表单校验/提交,类似 <code>ElMessage</code> 的用法。</p><p>调用时函数内部会临时挂载一个不可见的 <code>MForm</code> 实例,把入参作为 props 透传给它,等待初始化完成后调用其 <code>submitForm</code> 方法。校验通过则 <code>resolve</code> 表单值,校验失败则 <code>reject</code> 错误信息,最后自动卸载实例并清理 DOM。</p><p>适用于一些没有合适的容器、但又需要复用 <code>MForm</code> 校验逻辑的场景,例如:</p><ul><li>通过快捷菜单/命令面板触发一次性表单</li><li>在脚本/服务层完成一次表单值校验后再发请求</li><li><code>config</code> 配置当作&quot;可执行的校验规则&quot;使用</li></ul><h2 id="签名" tabindex="-1">签名 <a class="header-anchor" href="#签名" aria-label="Permalink to “签名”"></a></h2><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> submitForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">options</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> SubmitFormOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Promise</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;;</span></span></code></pre></div><h2 id="参数" tabindex="-1">参数 <a class="header-anchor" href="#参数" aria-label="Permalink to “参数”"></a></h2><p><code>options</code><code>MForm</code> 组件的 props 基本对齐,额外提供了 <code>native</code><code>returnChangeRecords</code><code>appContext</code><code>timeout</code> 等参数。</p><table tabindex="0"><thead><tr><th>名称</th><th>类型</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td><code>config</code></td><td><code>FormConfig</code></td><td></td><td>必填,表单配置</td></tr><tr><td><code>initValues</code></td><td><code>Record&lt;string, any&gt;</code></td><td><code>{}</code></td><td>表单初始值</td></tr><tr><td><code>lastValues</code></td><td><code>Record&lt;string, any&gt;</code></td><td><code>{}</code></td><td>需对比的值(开启对比模式时传入)</td></tr><tr><td><code>isCompare</code></td><td><code>boolean</code></td><td><code>false</code></td><td>是否开启对比模式</td></tr><tr><td><code>parentValues</code></td><td><code>Record&lt;string, any&gt;</code></td><td><code>{}</code></td><td>父级 values透传给字段的回调</td></tr><tr><td><code>labelWidth</code></td><td><code>string</code></td><td><code>&#39;200px&#39;</code></td><td>label 宽度</td></tr><tr><td><code>disabled</code></td><td><code>boolean</code></td><td><code>false</code></td><td>是否禁用</td></tr><tr><td><code>height</code></td><td><code>string</code></td><td><code>&#39;auto&#39;</code></td><td>表单高度</td></tr><tr><td><code>stepActive</code></td><td><code>string | number</code></td><td><code>1</code></td><td>步骤表单当前激活步骤</td></tr><tr><td><code>size</code></td><td><code>&#39;small&#39; | &#39;default&#39; | &#39;large&#39;</code></td><td></td><td>组件尺寸</td></tr><tr><td><code>inline</code></td><td><code>boolean</code></td><td><code>false</code></td><td>是否行内表单</td></tr><tr><td><code>labelPosition</code></td><td><code>string</code></td><td><code>&#39;right&#39;</code></td><td>label 对齐方式</td></tr><tr><td><code>keyProp</code></td><td><code>string</code></td><td><code>&#39;__key&#39;</code></td><td>配置项的唯一 key</td></tr><tr><td><code>popperClass</code></td><td><code>string</code></td><td></td><td>弹层 className</td></tr><tr><td><code>preventSubmitDefault</code></td><td><code>boolean</code></td><td></td><td>是否阻止表单原生 submit</td></tr><tr><td><code>extendState</code></td><td><code>(state: FormState) =&gt; Record&lt;string, any&gt; | Promise&lt;Record&lt;string, any&gt;&gt;</code></td><td></td><td>扩展 <code>formState</code></td></tr><tr><td><code>native</code></td><td><code>boolean</code></td><td><code>false</code></td><td>透传给 <code>Form.submitForm</code><code>true</code> 时返回内部响应式 <code>values</code>,否则返回 <code>cloneDeep(toRaw(values))</code></td></tr><tr><td><code>returnChangeRecords</code></td><td><code>boolean</code></td><td><code>false</code></td><td><code>true</code> 时 resolve 结果为 <code>{ values, changeRecords }</code>,携带表单变更记录;否则仅 resolve <code>values</code></td></tr><tr><td><code>appContext</code></td><td><code>AppContext | null</code></td><td><code>null</code></td><td>父级 Vue 应用上下文。需要继承全局组件、指令、provide 等时传入,常通过 <code>app._context</code><code>getCurrentInstance()?.appContext</code> 获取</td></tr><tr><td><code>timeout</code></td><td><code>number</code></td><td><code>10000</code></td><td>等待表单初始化的最长时间(毫秒)。超时将以错误 reject。设为 <code>&lt;= 0</code> 时关闭超时兜底</td></tr></tbody></table><h2 id="返回值" tabindex="-1">返回值 <a class="header-anchor" href="#返回值" aria-label="Permalink to “返回值”"></a></h2><ul><li><code>校验通过</code><code>Promise&lt;any&gt;</code> resolve 当前表单值(<code>native</code> 决定是否克隆);当 <code>returnChangeRecords</code><code>true</code>resolve <code>{ values, changeRecords }</code></li><li><code>校验失败</code><code>Promise&lt;any&gt;</code> reject 一个 <code>Error</code><code>message</code> 中包含逐条字段错误信息(格式 <code>${text} -&gt; ${message}</code>,多条用 <code>&lt;br&gt;</code> 分隔)</li><li><code>初始化超时</code><code>Promise&lt;any&gt;</code> reject <code>Error(&#39;submitForm timeout after ${timeout}ms: form is not initialized.&#39;)</code></li></ul><p>无论成功或失败,函数都会在最后自动 <code>unmount</code> 内部 app 并移除挂载用的 DOM 容器,无需调用方手动清理。</p><div class="tip custom-block"><p class="custom-block-title">关于 changeRecords</p><p><code>changeRecords</code> 记录的是表单挂载后发生的字段变更(由各字段的 <code>change</code> 事件累积而来)。在 <code>submitForm</code> 这种命令式、无用户交互的场景下,通常为空数组;只有在 <code>extendState</code> 或字段联动等逻辑中触发了变更时才会有内容。<code>MForm</code> 内部的 <code>submitForm</code> 在校验通过后会清空变更记录,因此本函数会在调用前先对其做快照再返回。</p></div><h2 id="基础用法" tabindex="-1">基础用法 <a class="header-anchor" href="#基础用法" aria-label="Permalink to “基础用法”"></a></h2><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { submitForm } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@tmagic/form&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> values</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> submitForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config: [</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;text&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;username&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;用户名&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> rules: [{ required: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, message: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;请输入用户名&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }],</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> initValues: { username: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;提交成功&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, values);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">} </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (e) {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;校验失败&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, e);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="同时获取变更记录-changerecords" tabindex="-1">同时获取变更记录changeRecords <a class="header-anchor" href="#同时获取变更记录-changerecords" aria-label="Permalink to “同时获取变更记录changeRecords”"></a></h2><p>设置 <code>returnChangeRecords: true</code>resolve 的结果会从单纯的 <code>values</code> 变为 <code>{ values, changeRecords }</code></p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { submitForm } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@tmagic/form&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">values</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">changeRecords</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> submitForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config: [{ type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;text&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;username&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;用户名&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }],</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> initValues: { username: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;foo&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> returnChangeRecords: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(values); </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// { username: &#39;foo&#39; }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(changeRecords); </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// ChangeRecord[]</span></span></code></pre></div><h2 id="在组件中继承父级应用上下文" tabindex="-1">在组件中继承父级应用上下文 <a class="header-anchor" href="#在组件中继承父级应用上下文" aria-label="Permalink to “在组件中继承父级应用上下文”"></a></h2><p><code>MForm</code> 内部使用 <code>@tmagic/design</code> 的组件(背后可能是 <code>element-plus</code><code>tdesign</code>),需要宿主应用先完成相应的 <code>app.use(...)</code> 安装。在 <code>submitForm</code> 这种脱离常规组件树的命令式调用中,可通过 <code>appContext</code> 把父级应用上下文带过去:</p><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> setup</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> lang</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;ts&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { getCurrentInstance } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;vue&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { submitForm } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@tmagic/form&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">appContext</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> getCurrentInstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> onClick</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> values</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> submitForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config: [{ type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;text&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;text&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;文本&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }],</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> initValues: { text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;hello&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> appContext,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(values);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">};</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span></code></pre></div><p>也可以在初始化 app 时把上下文缓存下来,再在任意位置复用:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createApp } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;vue&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ElementPlus </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;element-plus&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> MagicForm, { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> SubmitFormOptions, submitForm </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> rawSubmitForm } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@tmagic/form&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> App </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;./App.vue&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> app</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createApp</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(App);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">app.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">use</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ElementPlus);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">app.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">use</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(MagicForm);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">app.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mount</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;#app&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> submitForm</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">options</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Omit</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SubmitFormOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;appContext&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> rawSubmitForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({ </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">...</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">options, appContext: app._context });</span></span></code></pre></div><h2 id="处理校验错误" tabindex="-1">处理校验错误 <a class="header-anchor" href="#处理校验错误" aria-label="Permalink to “处理校验错误”"></a></h2><p>校验失败时 reject 的 <code>Error.message</code> 已经把出错字段拼好,可以直接展示到用户:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { tMagicMessage } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@tmagic/design&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> values</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> submitForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({ config, initValues });</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> save</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(values);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">} </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">e</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tMagicMessage.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dangerouslyUseHTMLString: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> message: e.message,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="运行环境" tabindex="-1">运行环境 <a class="header-anchor" href="#运行环境" aria-label="Permalink to “运行环境”"></a></h2><p><code>submitForm</code> 内部依赖 <code>document</code> / <code>window</code> 来挂载临时 Vue 实例,因此<strong>只能在浏览器或具备 DOM 环境的运行时中使用</strong></p><table tabindex="0"><thead><tr><th>环境</th><th>是否可用</th><th>说明</th></tr></thead><tbody><tr><td>浏览器 / Electron 渲染进程 / 浏览器扩展</td><td></td><td>直接可用</td></tr><tr><td>Vitest / Jest + <code>happy-dom</code> / <code>jsdom</code></td><td></td><td>项目自身的单测就跑在这种环境下</td></tr><tr><td>纯 Node.js / Bun / Deno无 DOM polyfill</td><td></td><td>模块顶层就会读 <code>document</code>,会抛 <code>document is not defined</code></td></tr><tr><td>Node.js + 手动注入 <code>happy-dom</code> / <code>jsdom</code></td><td>⚠️</td><td>可用,需要在 import <code>@tmagic/form</code> <strong>之前</strong>完成全局变量注入;校验行为不一定与浏览器完全一致</td></tr></tbody></table><h3 id="在-node-js-中使用-需要先准备-dom" tabindex="-1">在 Node.js 中使用(需要先准备 DOM <a class="header-anchor" href="#在-node-js-中使用-需要先准备-dom" aria-label="Permalink to “在 Node.js 中使用(需要先准备 DOM”"></a></h3><p>下面是一个在 Node 脚本里调用 <code>submitForm</code> 的完整例子,使用 <a href="https://github.com/capricorn86/happy-dom" target="_blank" rel="noreferrer"><code>happy-dom</code></a> 作为 DOM polyfill</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// scripts/check-form.ts</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Window } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;happy-dom&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> window</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Window</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Object.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">assign</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(globalThis, {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> window,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> document: window.document,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> navigator: window.navigator,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> HTMLElement: window.HTMLElement,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 注意DOM polyfill 必须先注入到 globalThis再用动态 import</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 加载业务模块,否则 @tmagic/design 等模块顶层执行时就会读 document</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">createApp</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;vue&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ElementPlus</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;element-plus&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)).default;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> MagicForm</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;@tmagic/form&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)).default;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">submitForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;@tmagic/form&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> parentApp</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createApp</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({ </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">render</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">parentApp.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">use</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ElementPlus);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">parentApp.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">use</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(MagicForm);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> values</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> submitForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config: [{ type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;text&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;username&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;用户名&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }],</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> initValues: { username: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;foo&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> appContext: parentApp._context,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(values);</span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">注意</p><ul><li>DOM polyfill 必须在 <strong>import 业务模块之前</strong> 注入到 <code>globalThis</code>,否则模块顶层执行时仍会失败</li><li><code>happy-dom</code> / <code>jsdom</code> 中,<code>element-plus</code> 的部分 <code>validate()</code> 行为不一定能 1:1 复现真实浏览器(例如某些场景下必填规则可能不触发),建议关键校验使用自定义 <code>validator</code> 函数确保稳定</li><li>如果只是想在 Node 端做一次纯校验,更稳妥的做法是直接复用 <a href="https://github.com/yiminghe/async-validator" target="_blank" rel="noreferrer"><code>async-validator</code></a>element-plus 内部用的就是它),绕开整个 Vue 渲染层</li></ul></div><h2 id="类型定义" tabindex="-1">类型定义 <a class="header-anchor" href="#类型定义" aria-label="Permalink to “类型定义”"></a></h2><details class="details custom-block"><summary>查看 <code>SubmitFormOptions</code> 类型定义</summary><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/**</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * submitForm 函数参数(与 Form.vue 组件 props 对齐)</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> SubmitFormOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 表单配置 */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> FormConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 表单初始值 */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> initValues</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 需对比的值(开启对比模式时传入) */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> lastValues</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 是否开启对比模式 */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> isCompare</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> parentValues</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> labelWidth</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> disabled</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> height</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> stepActive</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> string</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> size</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;small&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;default&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;large&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> inline</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> labelPosition</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> keyProp</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> popperClass</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> preventSubmitDefault</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> extendState</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">_state</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> FormState</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Promise</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;&gt;;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 透传给 Form.submitForm 的参数:是否直接返回原始响应式 values */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> native</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /**</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 是否在 resolve 结果中携带 changeRecords变更记录</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 开启后 resolve 的结果为 `{ values, changeRecords }`,否则仅 resolve values。</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> returnChangeRecords</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /**</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 父级应用上下文用于继承全局组件、指令、provide 等。</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 通常通过 `app._context` 或 `getCurrentInstance()?.appContext` 获取。</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> appContext</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> AppContext</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 等待表单初始化的最长时间(毫秒),超时将以错误 reject。默认 10000ms */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div></details><details class="details custom-block"><summary>查看 <code>SubmitFormResult</code> 类型定义</summary><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/**</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 开启 `returnChangeRecords` 时 submitForm 的返回结果</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> SubmitFormResult</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 校验通过后的表单值 */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> values</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 表单变更记录 */</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> changeRecords</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ChangeRecord</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[];</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div></details></div></div></main><footer class="VPDocFooter" data-v-e240b221 data-v-5ee03efa><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-5ee03efa><span class="visually-hidden" id="doc-footer-aria-label" data-v-5ee03efa>Pager</span><div class="pager" data-v-5ee03efa><a class="VPLink link pager-link prev" href="/tmagic-editor/docs/api/form/form-dialog-events.html" data-v-5ee03efa><!--[--><span class="desc" data-v-5ee03efa>Previous page</span><span class="title" data-v-5ee03efa>events</span><!--]--></a></div><div class="pager" data-v-5ee03efa><a class="VPLink link pager-link next" href="/tmagic-editor/docs/api/table/props.html" data-v-5ee03efa><!--[--><span class="desc" data-v-5ee03efa>Next page</span><span class="title" data-v-5ee03efa>props</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-52085faa data-v-b8960fa3><div class="container" data-v-b8960fa3><p class="message" data-v-b8960fa3>Powered by 腾讯视频会员平台技术中心</p><p class="copyright" data-v-b8960fa3>Copyright (C) 2025 Tencent.</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api_editor_codeblockservicemethods.md\":\"C_PneqGf\",\"api_editor_componentlistservicemethods.md\":\"NIwatNAh\",\"api_editor_datasourceservicemethods.md\":\"BMf5I58e\",\"api_editor_editorserviceevents.md\":\"DkdzACfI\",\"api_editor_editorservicemethods.md\":\"DPIOaqjV\",\"api_editor_events.md\":\"Dsc4NqMg\",\"api_editor_eventsservicemethods.md\":\"Bw1rmuNy\",\"api_editor_historyserviceevents.md\":\"CtunHpDp\",\"api_editor_historyservicemethods.md\":\"vIXypc6c\",\"api_editor_props.md\":\"Bqc-msOe\",\"api_editor_propsserviceevents.md\":\"CznK704B\",\"api_editor_propsservicemethods.md\":\"CHnpUlWe\",\"api_editor_slots.md\":\"B1B73apK\",\"api_editor_storageservicemethods.md\":\"XM0kc8xb\",\"api_editor_uiservicemethods.md\":\"CaCmG806\",\"api_form_form-dialog-events.md\":\"Bsi7I9tr\",\"api_form_form-dialog-methods.md\":\"B_sgIgX8\",\"api_form_form-dialog-props.md\":\"BfYnG4uw\",\"api_form_form-events.md\":\"C8SsDKZ6\",\"api_form_form-methods.md\":\"aycnh5FX\",\"api_form_form-props.md\":\"CnIXk9AC\",\"api_form_submit-form.md\":\"BkueFK3n\",\"api_stage_coreevents.md\":\"Cgw_NWIw\",\"api_stage_coremethods.md\":\"BfJZoQ1-\",\"api_table_events.md\":\"ANzBnLY7\",\"api_table_methods.md\":\"DKsUhNyQ\",\"api_table_props.md\":\"8p93oj03\",\"form-config_compare.md\":\"BmhAWdnU\",\"form-config_editor-fields_code-link.md\":\"_WpUScRP\",\"form-config_editor-fields_code-select-col.md\":\"5v2NiQs-\",\"form-config_editor-fields_code-select.md\":\"tFuJKxmz\",\"form-config_editor-fields_code.md\":\"QLtMzjkL\",\"form-config_editor-fields_cond-op-select.md\":\"DuVk7Plf\",\"form-config_editor-fields_data-source-field-select.md\":\"l-mtFHlA\",\"form-config_editor-fields_data-source-fields.md\":\"DuPucaNA\",\"form-config_editor-fields_data-source-input.md\":\"Cls0ZVmf\",\"form-config_editor-fields_data-source-method-select.md\":\"BQ9ihZav\",\"form-config_editor-fields_data-source-methods.md\":\"D4eLoaZh\",\"form-config_editor-fields_data-source-mocks.md\":\"BxEpd6-f\",\"form-config_editor-fields_data-source-select.md\":\"BeMf8tjW\",\"form-config_editor-fields_display-conds.md\":\"DthLWdef\",\"form-config_editor-fields_event-select.md\":\"Ct78kypt\",\"form-config_editor-fields_key-value.md\":\"BBSWwoHC\",\"form-config_editor-fields_page-fragment-select.md\":\"C4a_ieVQ\",\"form-config_editor-fields_ui-select.md\":\"DeBRlgMj\",\"form-config_fields_cascader.md\":\"Ad-9vSWz\",\"form-config_fields_checkbox.md\":\"DA3EU5r9\",\"form-config_fields_color-picker.md\":\"ChtAlvyA\",\"form-config_fields_date-picker.md\":\"BLpndPyR\",\"form-config_fields_daterange-picker.md\":\"BeDfHdP5\",\"form-config_fields_datetime-picker.md\":\"DKx6HjF1\",\"form-config_fields_display.md\":\"FpktLnh9\",\"form-config_fields_dynamic-field.md\":\"D-qL57IR\",\"form-config_fields_hidden.md\":\"CwIk9R6T\",\"form-config_fields_link.md\":\"CZP0Pwde\",\"form-config_fields_number-range.md\":\"D9w-K4YH\",\"form-config_fields_number.md\":\"BP6zDFhk\",\"form-config_fields_radio.md\":\"fpqLi6D8\",\"form-config_fields_select.md\":\"Busav8N-\",\"form-config_fields_switch.md\":\"CDph7J3q\",\"form-config_fields_text.md\":\"DSP7CO2W\",\"form-config_fields_textarea.md\":\"Cil4hAqw\",\"form-config_fields_time-picker.md\":\"BIgdvB4T\",\"form-config_fields_timerange-picker.md\":\"kRMAFTrr\",\"form-config_layout.md\":\"BQhGI4Qq\",\"form-config_relate.md\":\"DvsbvOrz\",\"guide_advanced_code-block.md\":\"CRnQiSUe\",\"guide_advanced_coupling.md\":\"QzzEWi8z\",\"guide_advanced_data-source.md\":\"aV48AJ93\",\"guide_advanced_history-list.md\":\"DiAyWX3H\",\"guide_advanced_js-schema.md\":\"DXahSd8l\",\"guide_advanced_layout.md\":\"m3-E5MCg\",\"guide_advanced_page.md\":\"DtD6IjTT\",\"guide_advanced_tmagic-form.md\":\"BGo1HV71\",\"guide_component.md\":\"ClwHnKxy\",\"guide_conception.md\":\"BvWRTJve\",\"guide_editor-expand.md\":\"DPpw0fx9\",\"guide_index.md\":\"C9UYRlPd\",\"guide_introduction.md\":\"D4FioLjl\",\"guide_migration.md\":\"Ce1OLlPP\",\"guide_publish.md\":\"BkTaAJA2\",\"guide_runtime.md\":\"JZ9evVO4\",\"guide_tutorial_hello-world.md\":\"D89qcYij\",\"guide_tutorial_index.md\":\"CHgYShbW\",\"guide_tutorial_render.md\":\"Ck2bd1u7\",\"guide_tutorial_runtime.md\":\"CSNPMbNQ\",\"index.md\":\"yV4-lxaL\",\"runtime-api_core_app.md\":\"DvMcbTo5\",\"runtime-api_core_devtoolapi.md\":\"Dt64oZTL\",\"runtime-api_core_env.md\":\"BWNcvewl\",\"runtime-api_core_eventhelper.md\":\"CTcULNOH\",\"runtime-api_core_flowstate.md\":\"B4jkAJTv\",\"runtime-api_core_iteratorcontainer.md\":\"BOxfQgFl\",\"runtime-api_core_node.md\":\"DLCapBPL\",\"runtime-api_core_page.md\":\"Bzc2uHYw\",\"runtime-api_core_utils.md\":\"WYx95Kix\",\"runtime-api_data-source_datasource.md\":\"DiemAPn7\",\"runtime-api_data-source_datasourcemanager.md\":\"eR5GBSIC\",\"runtime-api_data-source_httpdatasource.md\":\"D3tOijZy\",\"runtime-api_data-source_observeddata.md\":\"Dvqp1Z-P\",\"runtime-api_data-source_utils.md\":\"Be3cnv3y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"tmagic-editor\",\"description\":\"页面可视化平台\",\"base\":\"/tmagic-editor/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"./favicon.png\",\"search\":{\"provider\":\"local\"},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/Tencent/tmagic-editor\"}],\"footer\":{\"message\":\"Powered by 腾讯视频会员平台技术中心\",\"copyright\":\"Copyright (C) 2025 Tencent.\"},\"nav\":[{\"text\":\"文档\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"Editor API\",\"link\":\"/api/editor/props\",\"activeMatch\":\"/api/\"},{\"text\":\"Runtime API\",\"link\":\"/runtime-api/core/app\",\"activeMatch\":\"/runtime-api/\"},{\"text\":\"表单配置\",\"link\":\"/form-config/fields/text\",\"activeMatch\":\"/form-config/\"},{\"text\":\"更新日志\",\"link\":\"https://github.com/Tencent/tmagic-editor/releases\"},{\"text\":\"Playground\",\"link\":\"https://tencent.github.io/tmagic-editor/playground/index.html\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"文档\",\"items\":[{\"text\":\"介绍\",\"link\":\"/guide/introduction.md\"},{\"text\":\"快速开始\",\"link\":\"/guide/\"},{\"text\":\"RUNTIME\",\"link\":\"/guide/runtime.md\"},{\"text\":\"组件开发\",\"link\":\"/guide/component.md\"},{\"text\":\"基础概念\",\"link\":\"/guide/conception.md\"},{\"text\":\"页面发布\",\"link\":\"/guide/publish.md\"},{\"text\":\"编辑器扩展\",\"link\":\"/guide/editor-expand.md\"},{\"text\":\"升级到1.5.x\",\"link\":\"/guide/migration.md\"}]},{\"text\":\"进阶指南\",\"items\":[{\"text\":\"JS Schema\",\"link\":\"/guide/advanced/js-schema.md\"},{\"text\":\"布局原理\",\"link\":\"/guide/advanced/layout.md\"},{\"text\":\"页面渲染\",\"link\":\"/guide/advanced/page.md\"},{\"text\":\"联动原理\",\"link\":\"/guide/advanced/coupling.md\"},{\"text\":\"代码块\",\"link\":\"/guide/advanced/code-block.md\"},{\"text\":\"数据源\",\"link\":\"/guide/advanced/data-source.md\"},{\"text\":\"历史记录面板\",\"link\":\"/guide/advanced/history-list.md\"},{\"text\":\"@tmagic/form\",\"link\":\"/guide/advanced/tmagic-form.md\"}]},{\"text\":\"教程\",\"items\":[{\"text\":\"写在前面\",\"link\":\"/guide/tutorial/\"},{\"text\":\"1.Hello World\",\"link\":\"/guide/tutorial/hello-world.md\"},{\"text\":\"2.Runtime\",\"link\":\"/guide/tutorial/runtime.md\"},{\"text\":\"3.DSL解析渲染\",\"link\":\"/guide/tutorial/render.md\"}]}],\"/api/\":[{\"text\":\"编辑器\",\"items\":[{\"text\":\"Editor组件\",\"items\":[{\"text\":\"props\",\"link\":\"/api/editor/props.md\"},{\"text\":\"slots\",\"link\":\"/api/editor/slots.md\"},{\"text\":\"events\",\"link\":\"/api/editor/events.md\"}]},{\"text\":\"editorService\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/editor/editorServiceMethods.md\"},{\"text\":\"事件\",\"link\":\"/api/editor/editorServiceEvents.md\"}]},{\"text\":\"propsService\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/editor/propsServiceMethods.md\"},{\"text\":\"事件\",\"link\":\"/api/editor/propsServiceEvents.md\"}]},{\"text\":\"historyService\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/editor/historyServiceMethods.md\"},{\"text\":\"事件\",\"link\":\"/api/editor/historyServiceEvents.md\"}]},{\"text\":\"eventsService\",\"link\":\"/api/editor/eventsServiceMethods.md\"},{\"text\":\"uiService\",\"link\":\"/api/editor/uiServiceMethods.md\"},{\"text\":\"codeBlockService\",\"link\":\"/api/editor/codeBlockServiceMethods.md\"},{\"text\":\"componentListService\",\"link\":\"/api/editor/componentListServiceMethods.md\"},{\"text\":\"storageService\",\"link\":\"/api/editor/storageServiceMethods.md\"}]},{\"text\":\"表单\",\"items\":[{\"text\":\"Form组件\",\"items\":[{\"text\":\"props\",\"link\":\"/api/form/form-props\"},{\"text\":\"methods\",\"link\":\"/api/form/form-methods\"},{\"text\":\"events\",\"link\":\"/api/form/form-events\"}]},{\"text\":\"FormDialog组件\",\"items\":[{\"text\":\"props\",\"link\":\"/api/form/form-dialog-props\"},{\"text\":\"methods\",\"link\":\"/api/form/form-dialog-methods\"},{\"text\":\"events\",\"link\":\"/api/form/form-dialog-events\"}]},{\"text\":\"工具函数\",\"items\":[{\"text\":\"submitForm\",\"link\":\"/api/form/submit-form\"}]}]},{\"text\":\"表格\",\"items\":[{\"text\":\"Table组件\",\"items\":[{\"text\":\"props\",\"link\":\"/api/table/props\"},{\"text\":\"methods\",\"link\":\"/api/table/methods\"},{\"text\":\"events\",\"link\":\"/api/table/events\"}]}]},{\"text\":\"stage\",\"items\":[{\"text\":\"StageCore\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/stage/coreMethods\"},{\"text\":\"事件\",\"link\":\"/api/stage/coreEvents\"}]}]}],\"/form-config/\":[{\"text\":\"基础配置\",\"items\":[{\"text\":\"Input输入框\",\"link\":\"/form-config/fields/text.md\"},{\"text\":\"Textarea文本域\",\"link\":\"/form-config/fields/textarea.md\"},{\"text\":\"InputNumber计数器\",\"link\":\"/form-config/fields/number.md\"},{\"text\":\"NumberRange数字范围\",\"link\":\"/form-config/fields/number-range.md\"},{\"text\":\"Display只读文本\",\"link\":\"/form-config/fields/display.md\"},{\"text\":\"Hidden隐藏域\",\"link\":\"/form-config/fields/hidden.md\"},{\"text\":\"Link链接\",\"link\":\"/form-config/fields/link.md\"},{\"text\":\"Checkbox多选框\",\"link\":\"/form-config/fields/checkbox.md\"},{\"text\":\"Radio单选框\",\"link\":\"/form-config/fields/radio.md\"},{\"text\":\"Switch开关\",\"link\":\"/form-config/fields/switch.md\"},{\"text\":\"Select选择器\",\"link\":\"/form-config/fields/select.md\"},{\"text\":\"Cascader级联选择器\",\"link\":\"/form-config/fields/cascader.md\"},{\"text\":\"ColorPicker颜色选择器\",\"link\":\"/form-config/fields/color-picker.md\"},{\"text\":\"DatePick日期选择器\",\"link\":\"/form-config/fields/date-picker.md\"},{\"text\":\"DateRangePick日期范围选择器\",\"link\":\"/form-config/fields/daterange-picker.md\"},{\"text\":\"DatetimePick日期时间选择器\",\"link\":\"/form-config/fields/datetime-picker.md\"},{\"text\":\"TimePick时间选择器\",\"link\":\"/form-config/fields/time-picker.md\"},{\"text\":\"TimeRangePick时间范围选择器\",\"link\":\"/form-config/fields/timerange-picker.md\"},{\"text\":\"DynamicField动态表单\",\"link\":\"/form-config/fields/dynamic-field.md\"}]},{\"text\":\"编辑器中可用配置\",\"items\":[{\"text\":\"Code代码编辑器\",\"link\":\"/form-config/editor-fields/code.md\"},{\"text\":\"CodeLink代码链接\",\"link\":\"/form-config/editor-fields/code-link.md\"},{\"text\":\"CodeSelect代码块选择器\",\"link\":\"/form-config/editor-fields/code-select.md\"},{\"text\":\"CodeSelectCol代码块选择列\",\"link\":\"/form-config/editor-fields/code-select-col.md\"},{\"text\":\"DataSourceSelect数据源选择器\",\"link\":\"/form-config/editor-fields/data-source-select.md\"},{\"text\":\"DataSourceFieldSelect数据源字段选择器\",\"link\":\"/form-config/editor-fields/data-source-field-select.md\"},{\"text\":\"DataSourceMethodSelect数据源方法选择器\",\"link\":\"/form-config/editor-fields/data-source-method-select.md\"},{\"text\":\"DataSourceFields数据源字段配置\",\"link\":\"/form-config/editor-fields/data-source-fields.md\"},{\"text\":\"DataSourceInput数据源输入框\",\"link\":\"/form-config/editor-fields/data-source-input.md\"},{\"text\":\"DataSourceMethods数据源方法配置\",\"link\":\"/form-config/editor-fields/data-source-methods.md\"},{\"text\":\"DataSourceMocks数据源Mock配置\",\"link\":\"/form-config/editor-fields/data-source-mocks.md\"},{\"text\":\"UISelect组件选择器\",\"link\":\"/form-config/editor-fields/ui-select.md\"},{\"text\":\"KeyValue键值对\",\"link\":\"/form-config/editor-fields/key-value.md\"},{\"text\":\"PageFragmentSelect页面片选择器\",\"link\":\"/form-config/editor-fields/page-fragment-select.md\"},{\"text\":\"EventSelect事件选择器\",\"link\":\"/form-config/editor-fields/event-select.md\"},{\"text\":\"DisplayConds显示条件配置\",\"link\":\"/form-config/editor-fields/display-conds.md\"},{\"text\":\"CondOpSelect条件操作选择器\",\"link\":\"/form-config/editor-fields/cond-op-select.md\"}]},{\"text\":\"布局配置\",\"items\":[{\"text\":\"布局\",\"link\":\"/form-config/layout.md\"}]},{\"text\":\"联动配置\",\"items\":[{\"text\":\"联动\",\"link\":\"/form-config/relate.md\"}]},{\"text\":\"表单对比\",\"items\":[{\"text\":\"表单对比\",\"link\":\"/form-config/compare.md\"}]}],\"/runtime-api/\":[{\"text\":\"@tmagic/core\",\"items\":[{\"text\":\"App\",\"link\":\"/runtime-api/core/app\"},{\"text\":\"Node\",\"link\":\"/runtime-api/core/node\"},{\"text\":\"Page\",\"link\":\"/runtime-api/core/page\"},{\"text\":\"EventHelper\",\"link\":\"/runtime-api/core/eventHelper\"},{\"text\":\"Env\",\"link\":\"/runtime-api/core/env\"},{\"text\":\"IteratorContainer\",\"link\":\"/runtime-api/core/iteratorContainer\"},{\"text\":\"FlowState\",\"link\":\"/runtime-api/core/flowState\"},{\"text\":\"DevtoolApi\",\"link\":\"/runtime-api/core/devtoolApi\"},{\"text\":\"工具函数\",\"link\":\"/runtime-api/core/utils\"}]},{\"text\":\"@tmagic/data-source\",\"items\":[{\"text\":\"DataSourceManager\",\"link\":\"/runtime-api/data-source/dataSourceManager\"},{\"text\":\"DataSource\",\"link\":\"/runtime-api/data-source/dataSource\"},{\"text\":\"HttpDataSource\",\"link\":\"/runtime-api/data-source/httpDataSource\"},{\"text\":\"观察者数据类\",\"link\":\"/runtime-api/data-source/observedData\"},{\"text\":\"工具函数\",\"link\":\"/runtime-api/data-source/utils\"}]}]}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false,\"additionalConfig\":{}}");</script>
</body>
</html>