mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2026-06-25 09:30:02 +08:00
163 lines
92 KiB
HTML
163 lines
92 KiB
HTML
<!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.BuEOY8n1.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.rxbyCfCm.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.Cj3lXvvB.js">
|
||
<link rel="modulepreload" href="/tmagic-editor/docs/assets/chunks/framework.DRScawWW.js">
|
||
<link rel="modulepreload" href="/tmagic-editor/docs/assets/api_form_submit-form.md.BfvHmJFP.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-d84d18b9><!--[--><!--]--><!--[--><span tabindex="-1" data-v-4b64956f></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-4b64956f>Skip to content</a><!--]--><!----><header class="VPNav" data-v-d84d18b9 data-v-04cd9f45><div class="VPNavBar has-sidebar top" data-v-04cd9f45 data-v-98204f52><div class="wrapper" data-v-98204f52><div class="container" data-v-98204f52><div class="title" data-v-98204f52><div class="VPNavBarTitle has-sidebar" data-v-98204f52 data-v-a5e0ba12><a class="title" href="/tmagic-editor/docs/" data-v-a5e0ba12><!--[--><!--]--><!--[--><img class="VPImage logo" src="./favicon.png" alt data-v-afa82b87><!--]--><span data-v-a5e0ba12>tmagic-editor</span><!--[--><!--]--></a></div></div><div class="content" data-v-98204f52><div class="content-body" data-v-98204f52><!--[--><!--]--><div class="VPNavBarSearch search" data-v-98204f52 data-v-974eff7a><!--[--><button type="button" class="VPNavBarSearchButton" aria-label="Search" aria-keyshortcuts="/ control+k meta+k" data-v-974eff7a data-v-73422b9f><span class="vpi-search" aria-hidden="true" data-v-73422b9f></span><span class="text" data-v-73422b9f>Search</span><span class="keys" aria-hidden="true" data-v-73422b9f><kbd class="key-cmd" data-v-73422b9f>⌘</kbd><kbd class="key-ctrl" data-v-73422b9f>Ctrl</kbd><kbd data-v-73422b9f>K</kbd></span></button><!----><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-98204f52 data-v-b5e47e6a><span id="main-nav-aria-label" class="visually-hidden" data-v-b5e47e6a> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/tmagic-editor/docs/guide/" tabindex="0" data-v-b5e47e6a data-v-e5c7d2e3><!--[--><span data-v-e5c7d2e3>文档</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/tmagic-editor/docs/api/editor/props.html" tabindex="0" data-v-b5e47e6a data-v-e5c7d2e3><!--[--><span data-v-e5c7d2e3>Editor API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/tmagic-editor/docs/runtime-api/core/app.html" tabindex="0" data-v-b5e47e6a data-v-e5c7d2e3><!--[--><span data-v-e5c7d2e3>Runtime API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/tmagic-editor/docs/form-config/fields/text.html" tabindex="0" data-v-b5e47e6a data-v-e5c7d2e3><!--[--><span data-v-e5c7d2e3>表单配置</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-b5e47e6a data-v-e5c7d2e3><!--[--><span data-v-e5c7d2e3>更新日志</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-b5e47e6a data-v-e5c7d2e3><!--[--><span data-v-e5c7d2e3>Playground</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-98204f52 data-v-2f8c374a><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-2f8c374a data-v-769da6cc data-v-98daf1c8><span class="check" data-v-98daf1c8><span class="icon" data-v-98daf1c8><!--[--><span class="vpi-sun sun" data-v-769da6cc></span><span class="vpi-moon moon" data-v-769da6cc></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-98204f52 data-v-16712142 data-v-7b918527><!--[--><a class="VPSocialLink no-icon" href="https://github.com/Tencent/tmagic-editor" aria-label="github" target="_blank" rel="me noopener" data-v-7b918527 data-v-a672d564><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-98204f52 data-v-356d8703 data-v-41493e0d><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-41493e0d><span class="vpi-more-horizontal icon" data-v-41493e0d></span></button><div class="menu" data-v-41493e0d><div class="VPMenu" data-v-41493e0d data-v-bec84aa1><!----><!--[--><!--[--><!----><div class="group" data-v-356d8703><div class="item appearance" data-v-356d8703><p class="label" data-v-356d8703>Appearance</p><div class="appearance-action" data-v-356d8703><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-356d8703 data-v-769da6cc data-v-98daf1c8><span class="check" data-v-98daf1c8><span class="icon" data-v-98daf1c8><!--[--><span class="vpi-sun sun" data-v-769da6cc></span><span class="vpi-moon moon" data-v-769da6cc></span><!--]--></span></span></button></div></div></div><div class="group" data-v-356d8703><div class="item social-links" data-v-356d8703><div class="VPSocialLinks social-links-list" data-v-356d8703 data-v-7b918527><!--[--><a class="VPSocialLink no-icon" href="https://github.com/Tencent/tmagic-editor" aria-label="github" target="_blank" rel="me noopener" data-v-7b918527 data-v-a672d564><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-98204f52 data-v-475b1ff1><span class="container" data-v-475b1ff1><span class="top" data-v-475b1ff1></span><span class="middle" data-v-475b1ff1></span><span class="bottom" data-v-475b1ff1></span></span></button></div></div></div></div><div class="divider" data-v-98204f52><div class="divider-line" data-v-98204f52></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-d84d18b9 data-v-dbba7b63><div class="container" data-v-dbba7b63><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-dbba7b63><span class="vpi-align-left menu-icon" data-v-dbba7b63></span><span class="menu-text" data-v-dbba7b63>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-dbba7b63 data-v-016843db><button data-v-016843db>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-d84d18b9 data-v-c36ceaeb><div class="curtain" data-v-c36ceaeb></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-c36ceaeb><span class="visually-hidden" id="sidebar-aria-label" data-v-c36ceaeb> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-ca1a6d76><section class="VPSidebarItem level-0" data-v-ca1a6d76 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h2 class="text" data-v-0848dd37>编辑器</h2><!----></div><div class="items" data-v-0848dd37><!--[--><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>Editor组件</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/props.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>props</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/slots.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>slots</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/events.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>events</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>editorService</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/editorServiceMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/editorServiceEvents.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>propsService</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/propsServiceMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/propsServiceEvents.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>historyService</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/historyServiceMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/historyServiceEvents.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/eventsServiceMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>eventsService</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>uiService</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/uiServiceMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/uiServiceEvents.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/codeBlockServiceMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>codeBlockService</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/componentListServiceMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>componentListService</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/editor/storageServiceMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>storageService</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-ca1a6d76><section class="VPSidebarItem level-0 has-active" data-v-ca1a6d76 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h2 class="text" data-v-0848dd37>表单</h2><!----></div><div class="items" data-v-0848dd37><!--[--><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>Form组件</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-props.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>props</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-methods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>methods</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-events.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>events</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>FormDialog组件</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-dialog-props.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>props</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-dialog-methods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>methods</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/form-dialog-events.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>events</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 has-active" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>工具函数</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/form/submit-form.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>submitForm</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-ca1a6d76><section class="VPSidebarItem level-0" data-v-ca1a6d76 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h2 class="text" data-v-0848dd37>表格</h2><!----></div><div class="items" data-v-0848dd37><!--[--><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>Table组件</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/table/props.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>props</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/table/methods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>methods</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/table/events.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>events</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-ca1a6d76><section class="VPSidebarItem level-0" data-v-ca1a6d76 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h2 class="text" data-v-0848dd37>stage</h2><!----></div><div class="items" data-v-0848dd37><!--[--><section class="VPSidebarItem level-1" data-v-0848dd37 data-v-0848dd37><div class="item" role="button" tabindex="0" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><h3 class="text" data-v-0848dd37>StageCore</h3><!----></div><div class="items" data-v-0848dd37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/stage/coreMethods.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-0848dd37 data-v-0848dd37><div class="item" data-v-0848dd37><div class="indicator" data-v-0848dd37></div><a class="VPLink link link" href="/tmagic-editor/docs/api/stage/coreEvents.html" data-v-0848dd37><!--[--><p class="text" data-v-0848dd37>事件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-d84d18b9 data-v-a267f7c7><div class="VPDoc has-sidebar has-aside" data-v-a267f7c7 data-v-154870fd><!--[--><!--]--><div class="container" data-v-154870fd><div class="aside" data-v-154870fd><div class="aside-curtain" data-v-154870fd></div><div class="aside-container" data-v-154870fd><div class="aside-content" data-v-154870fd><div class="VPDocAside" data-v-154870fd data-v-23ce0ef1><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-23ce0ef1 data-v-26c56095><div class="content" data-v-26c56095><div class="outline-marker" data-v-26c56095></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-26c56095>On this page</div><ul class="VPDocOutlineItem root" data-v-26c56095 data-v-96d7f3c2><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-23ce0ef1></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-154870fd><div class="content-container" data-v-154870fd><!--[--><!--]--><main class="main" data-v-154870fd><div style="position:relative;" class="vp-doc _tmagic-editor_docs_api_form_submit-form" data-v-154870fd><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> 配置当作"可执行的校验规则"使用</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;"><</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><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>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<string, any></code></td><td><code>{}</code></td><td>表单初始值</td></tr><tr><td><code>lastValues</code></td><td><code>Record<string, any></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<string, any></code></td><td><code>{}</code></td><td>父级 values,透传给字段的回调</td></tr><tr><td><code>labelWidth</code></td><td><code>string</code></td><td><code>'200px'</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>'auto'</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>'small' | 'default' | 'large'</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>'right'</code></td><td>label 对齐方式</td></tr><tr><td><code>keyProp</code></td><td><code>string</code></td><td><code>'__key'</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) => Record<string, any> | Promise<Record<string, any>></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><= 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<any></code> resolve 当前表单值(<code>native</code> 决定是否克隆);当 <code>returnChangeRecords</code> 为 <code>true</code> 时,resolve <code>{ values, changeRecords }</code></li><li><code>校验失败</code> — <code>Promise<any></code> reject 一个 <code>Error</code>,<code>message</code> 中包含逐条字段错误信息(格式 <code>${text} -> ${message}</code>,多条用 <code><br></code> 分隔)</li><li><code>初始化超时</code> — <code>Promise<any></code> reject <code>Error('submitForm timeout after ${timeout}ms: form is not initialized.')</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;"> '@tmagic/form'</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;">'text'</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;">'username'</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;">'用户名'</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;">'请输入用户名'</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;">''</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;">'提交成功'</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;">'校验失败'</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;"> '@tmagic/form'</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;">'text'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'username'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'用户名'</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;">'foo'</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: 'foo' }</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;"><</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;">"ts"</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;"> { getCurrentInstance } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue'</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;"> '@tmagic/form'</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;">=></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;">'text'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'text'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'文本'</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;">'hello'</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;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></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;"> 'vue'</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;"> 'element-plus'</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;"> '@tmagic/form'</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;"> './App.vue'</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;">'#app'</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;"><</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;">'appContext'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></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;"> '@tmagic/design'</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;"> 'happy-dom'</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;">'vue'</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;">'element-plus'</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;">'@tmagic/form'</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;">'@tmagic/form'</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;">=></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;">'text'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'username'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'用户名'</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;">'foo'</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;"><</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;">>;</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;"><</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;">>;</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;"><</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;">>;</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;"> 'small'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'default'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'large'</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;">=></span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</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;">> </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;"><</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</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;">>>;</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-154870fd data-v-9aa88903><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-9aa88903><span class="visually-hidden" id="doc-footer-aria-label" data-v-9aa88903>Pager</span><div class="pager" data-v-9aa88903><a class="VPLink link pager-link prev" href="/tmagic-editor/docs/api/form/form-dialog-events.html" data-v-9aa88903><!--[--><span class="desc" data-v-9aa88903>Previous page</span><span class="title" data-v-9aa88903>events</span><!--]--></a></div><div class="pager" data-v-9aa88903><a class="VPLink link pager-link next" href="/tmagic-editor/docs/api/table/props.html" data-v-9aa88903><!--[--><span class="desc" data-v-9aa88903>Next page</span><span class="title" data-v-9aa88903>props</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-d84d18b9 data-v-216d1bad><div class="container" data-v-216d1bad><p class="message" data-v-216d1bad>Powered by 腾讯视频会员平台技术中心</p><p class="copyright" data-v-216d1bad>Copyright (C) 2025 Tencent.</p></div></footer><!--[--><!--]--></div></div>
|
||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api_editor_codeblockservicemethods.md\":\"j4dVHCGH\",\"api_editor_componentlistservicemethods.md\":\"NxJJ7jSN\",\"api_editor_datasourceservicemethods.md\":\"Cwx54HG-\",\"api_editor_editorserviceevents.md\":\"hznVLbbd\",\"api_editor_editorservicemethods.md\":\"DQM7LO-B\",\"api_editor_events.md\":\"CK-db6wl\",\"api_editor_eventsservicemethods.md\":\"DgT5USLv\",\"api_editor_historyserviceevents.md\":\"CFMnNblB\",\"api_editor_historyservicemethods.md\":\"D36JHUSZ\",\"api_editor_props.md\":\"BpFDudl-\",\"api_editor_propsserviceevents.md\":\"D0dwju-4\",\"api_editor_propsservicemethods.md\":\"DUyAi5co\",\"api_editor_slots.md\":\"DJqaZ_Ge\",\"api_editor_storageservicemethods.md\":\"CB0C9avr\",\"api_editor_uiserviceevents.md\":\"Clev7-IK\",\"api_editor_uiservicemethods.md\":\"De_fweRS\",\"api_form_form-dialog-events.md\":\"D6XTQ524\",\"api_form_form-dialog-methods.md\":\"Ueuf0c0d\",\"api_form_form-dialog-props.md\":\"Cml-Eqa0\",\"api_form_form-events.md\":\"DG4UpuVr\",\"api_form_form-methods.md\":\"Cd2u7iXt\",\"api_form_form-props.md\":\"CueJnMKv\",\"api_form_submit-form.md\":\"BfvHmJFP\",\"api_stage_coreevents.md\":\"DUyZ-b1s\",\"api_stage_coremethods.md\":\"CCiStN-K\",\"api_table_events.md\":\"D0jrNXi5\",\"api_table_methods.md\":\"BMQLD8Ia\",\"api_table_props.md\":\"Dz6QPlwr\",\"form-config_compare.md\":\"BWiQVKe8\",\"form-config_editor-fields_code-link.md\":\"DTwutJ77\",\"form-config_editor-fields_code-select-col.md\":\"jLTv4GM0\",\"form-config_editor-fields_code-select.md\":\"BYqocUgu\",\"form-config_editor-fields_code.md\":\"Au1f-DNG\",\"form-config_editor-fields_cond-op-select.md\":\"Bs2Yo7ZB\",\"form-config_editor-fields_data-source-field-select.md\":\"9hF5_-aD\",\"form-config_editor-fields_data-source-fields.md\":\"DySelL1w\",\"form-config_editor-fields_data-source-input.md\":\"Dje_r8vk\",\"form-config_editor-fields_data-source-method-select.md\":\"CRWJ97X0\",\"form-config_editor-fields_data-source-methods.md\":\"VMcsUuIm\",\"form-config_editor-fields_data-source-mocks.md\":\"DZu5Ixkb\",\"form-config_editor-fields_data-source-select.md\":\"Dx1QWM6q\",\"form-config_editor-fields_display-conds.md\":\"CYpYuR1J\",\"form-config_editor-fields_event-select.md\":\"DLHp-Vmi\",\"form-config_editor-fields_key-value.md\":\"BjB6X9qa\",\"form-config_editor-fields_page-fragment-select.md\":\"wvSVyv0a\",\"form-config_editor-fields_ui-select.md\":\"5lxwceR1\",\"form-config_fields_cascader.md\":\"BqaR_jJk\",\"form-config_fields_checkbox.md\":\"B3H9tDTv\",\"form-config_fields_color-picker.md\":\"BfKhuQ2V\",\"form-config_fields_date-picker.md\":\"DX4YW5cD\",\"form-config_fields_daterange-picker.md\":\"CQx7_7o0\",\"form-config_fields_datetime-picker.md\":\"BifHCHfQ\",\"form-config_fields_display.md\":\"C1mZcdPm\",\"form-config_fields_dynamic-field.md\":\"DJ-cs012\",\"form-config_fields_hidden.md\":\"Bne9Uir9\",\"form-config_fields_link.md\":\"Bx2F9oyx\",\"form-config_fields_number-range.md\":\"CKp78RUr\",\"form-config_fields_number.md\":\"D5bNUfXk\",\"form-config_fields_radio.md\":\"CApc-YRl\",\"form-config_fields_select.md\":\"6co_ozfc\",\"form-config_fields_switch.md\":\"nutxDuJ1\",\"form-config_fields_text.md\":\"BnY1GBJk\",\"form-config_fields_textarea.md\":\"DEFuwkuE\",\"form-config_fields_time-picker.md\":\"pwvE5Apr\",\"form-config_fields_timerange-picker.md\":\"WH5XqYvi\",\"form-config_layout.md\":\"CfbeUtDN\",\"form-config_relate.md\":\"BOq8cCWc\",\"guide_advanced_code-block.md\":\"BRqBOl1x\",\"guide_advanced_coupling.md\":\"BlqRETb5\",\"guide_advanced_data-source.md\":\"DwDLaCo2\",\"guide_advanced_history-list.md\":\"DG5H89iI\",\"guide_advanced_js-schema.md\":\"CVtu2aDq\",\"guide_advanced_layout.md\":\"BPHaakQH\",\"guide_advanced_page.md\":\"Bq5ur5ZK\",\"guide_advanced_tmagic-form.md\":\"pI-LesMe\",\"guide_component.md\":\"B0oMaoQH\",\"guide_conception.md\":\"Bk0z--Tx\",\"guide_editor-expand.md\":\"kURJwp1-\",\"guide_index.md\":\"Cs-1gaGv\",\"guide_introduction.md\":\"CbOBap0m\",\"guide_migration.md\":\"D7i0kyJT\",\"guide_publish.md\":\"CobEKm-2\",\"guide_runtime.md\":\"B8894cSC\",\"guide_tutorial_hello-world.md\":\"CdYVqNSu\",\"guide_tutorial_index.md\":\"Ca5QBUUf\",\"guide_tutorial_render.md\":\"C5eTNnhW\",\"guide_tutorial_runtime.md\":\"_r_5RwDT\",\"index.md\":\"DFLiGMfT\",\"runtime-api_core_app.md\":\"4d5_XHQc\",\"runtime-api_core_devtoolapi.md\":\"2ECqsdl6\",\"runtime-api_core_env.md\":\"CV_zSdgZ\",\"runtime-api_core_eventhelper.md\":\"DMQnqJ7Y\",\"runtime-api_core_flowstate.md\":\"CRQBKc_7\",\"runtime-api_core_iteratorcontainer.md\":\"9UCetu3n\",\"runtime-api_core_node.md\":\"FX3DSVeV\",\"runtime-api_core_page.md\":\"F0Kx4TDo\",\"runtime-api_core_utils.md\":\"CU9eOiU-\",\"runtime-api_data-source_datasource.md\":\"DP7MB7U8\",\"runtime-api_data-source_datasourcemanager.md\":\"Dca7MeRy\",\"runtime-api_data-source_httpdatasource.md\":\"CznGnva6\",\"runtime-api_data-source_observeddata.md\":\"CZE0bwLB\",\"runtime-api_data-source_utils.md\":\"CZqbuBtE\"}");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\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/editor/uiServiceMethods.md\"},{\"text\":\"事件\",\"link\":\"/api/editor/uiServiceEvents.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> |