mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2026-02-07 04:55:37 +00:00
16 lines
17 KiB
JavaScript
16 lines
17 KiB
JavaScript
import{ax as n,al as r,z as h,A as o,B as a,R as i,b2 as p,O as e,J as s}from"./chunks/framework.DkLJC2NO.js";const v=JSON.parse('{"title":"Cascader 级联选择器","description":"","frontmatter":{},"headers":[],"relativePath":"form-config/fields/cascader.md","filePath":"form-config/fields/cascader.md"}'),u={name:"form-config/fields/cascader.md"};function k(c,t,b,y,g,E){const l=r("demo-block");return o(),h("div",null,[t[7]||(t[7]=a("h1",{id:"cascader-级联选择器",tabindex:"-1"},[e("Cascader 级联选择器 "),a("a",{class:"header-anchor",href:"#cascader-级联选择器","aria-label":'Permalink to "Cascader 级联选择器"'},"")],-1)),t[8]||(t[8]=a("p",null,"当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择。",-1)),t[9]||(t[9]=a("h2",{id:"基础用法",tabindex:"-1"},[e("基础用法 "),a("a",{class:"header-anchor",href:"#基础用法","aria-label":'Permalink to "基础用法"'},"")],-1)),t[10]||(t[10]=a("p",null,"有两种触发子菜单的方式",-1)),i(l,{type:"form",config:[{type:"cascader",name:"cascader",text:"选项",placeholder:"请选择",options:[{value:"zhinan",label:"指南",children:[{value:"shejiyuanze",label:"设计原则",children:[{value:"yizhi",label:"一致"},{value:"fankui",label:"反馈"}]},{value:"daohang",label:"导航",children:[{value:"cexiangdaohang",label:"侧向导航"},{value:"dingbudaohang",label:"顶部导航"}]}]},{value:"zujian",label:"组件",children:[{value:"basic",label:"Basic",children:[{value:"layout",label:"Layout 布局"},{value:"color",label:"Color 色彩"}]},{value:"form",label:"Form",children:[{value:"checkbox",label:"Checkbox 多选框"},{value:"input",label:"Input 输入框"}]}]}]}]},{source:s(()=>[...t[0]||(t[0]=[a("p",null,"type为'cascader'",-1)])]),_:1}),t[11]||(t[11]=a("h2",{id:"禁用选项",tabindex:"-1"},[e("禁用选项 "),a("a",{class:"header-anchor",href:"#禁用选项","aria-label":'Permalink to "禁用选项"'},"")],-1)),t[12]||(t[12]=a("p",null,"通过在数据源中设置 disabled 字段来声明该选项是禁用的",-1)),i(l,{type:"form",config:[{type:"cascader",name:"cascader",text:"选项",placeholder:"请选择",disabled:!0,options:[]},{type:"cascader",name:"cascader1",text:"选项2",placeholder:"请选择",options:[{value:"zhinan",label:"指南",disabled:!0,children:[{value:"shejiyuanze",label:"设计原则",children:[{value:"yizhi",label:"一致"},{value:"fankui",label:"反馈"}]},{value:"daohang",label:"导航",children:[{value:"cexiangdaohang",label:"侧向导航"},{value:"dingbudaohang",label:"顶部导航"}]}]},{value:"zujian",label:"组件",children:[{value:"basic",label:"Basic",disabled:!0,children:[{value:"layout",label:"Layout 布局"},{value:"color",label:"Color 色彩"}]},{value:"form",label:"Form",children:[{value:"checkbox",label:"Checkbox 多选框"},{value:"input",disabled:!0,label:"Input 输入框"}]}]}]}]},{source:s(()=>[...t[1]||(t[1]=[a("p",null," 本例中,options 指定的数组中的第一个元素含有 disabled: true 键值对,因此是禁用的。在默认情况下,Cascader 会检查数据中每一项的 disabled 字段是否为 true ,如果你的数据中表示禁用含义的字段名不为 disabled ,可以通过 disabled 属性来指定(详见下方 API 表格)。当然, value 、 label 和 children 这三个字段名也可以通过同样的方式指定。 ",-1)])]),_:1}),t[13]||(t[13]=a("h2",{id:"多选",tabindex:"-1"},[e("多选 "),a("a",{class:"header-anchor",href:"#多选","aria-label":'Permalink to "多选"'},"")],-1)),t[14]||(t[14]=a("p",null,[e("可通过 "),a("code",null,"multiple = true"),e(" 来开启多选模式")],-1)),i(l,{type:"form",config:[{type:"cascader",name:"cascader",text:"选项",multiple:!0,placeholder:"请选择",options:[{value:"zhinan",label:"指南",children:[{value:"shejiyuanze",label:"设计原则",children:[{value:"yizhi",label:"一致"},{value:"fankui",label:"反馈"}]},{value:"daohang",label:"导航",children:[{value:"cexiangdaohang",label:"侧向导航"},{value:"dingbudaohang",label:"顶部导航"}]}]},{value:"zujian",label:"组件",children:[{value:"basic",label:"Basic",children:[{value:"layout",label:"Layout 布局"},{value:"color",label:"Color 色彩"}]},{value:"form",label:"Form",children:[{value:"checkbox",label:"Checkbox 多选框"},{value:"input",label:"Input 输入框"}]}]}]}]},{source:s(()=>[...t[2]||(t[2]=[a("p",null," 在开启多选模式后,默认情况下会展示所有已选中的选项的Tag ",-1)])]),_:1}),t[15]||(t[15]=a("h2",{id:"任意一级可选",tabindex:"-1"},[e("任意一级可选 "),a("a",{class:"header-anchor",href:"#任意一级可选","aria-label":'Permalink to "任意一级可选"'},"")],-1)),t[16]||(t[16]=a("p",null,"在单选模式下,你只能选择叶子节点;而在多选模式下,勾选父节点真正选中的都是叶子节点。启用该功能后,可让父子节点取消关联,选择任意一级选项。",-1)),t[17]||(t[17]=a("p",null,[e("可通过 "),a("code",null,"checkStrictly = true"),e(" 来设置父子节点取消选中关联,从而达到选择任意一级选项的目的。")],-1)),i(l,{type:"form",config:[{type:"cascader",name:"cascader",text:"选项",placeholder:"请选择",checkStrictly:!0,options:[{value:"zhinan",label:"指南",children:[{value:"shejiyuanze",label:"设计原则",children:[{value:"yizhi",label:"一致"},{value:"fankui",label:"反馈"}]}]},{value:"zujian",label:"组件",children:[{value:"basic",label:"Basic",children:[{value:"layout",label:"Layout 布局"},{value:"color",label:"Color 色彩"}]}]}]}]},{source:s(()=>[...t[3]||(t[3]=[a("p",null," 配置 checkStrictly 为 true,可选择任意一级选项 ",-1)])]),_:1}),t[18]||(t[18]=a("h2",{id:"仅返回选中节点的值",tabindex:"-1"},[e("仅返回选中节点的值 "),a("a",{class:"header-anchor",href:"#仅返回选中节点的值","aria-label":'Permalink to "仅返回选中节点的值"'},"")],-1)),t[19]||(t[19]=a("p",null,[e("在选中节点改变时,默认返回由该节点所在的各级菜单的值所组成的数组。可通过 "),a("code",null,"emitPath = false"),e(" 设置仅返回该节点的值。")],-1)),i(l,{type:"form",config:[{type:"cascader",name:"cascader",text:"选项",placeholder:"请选择",emitPath:!1,checkStrictly:!0,options:[{value:"zhinan",label:"指南",children:[{value:"shejiyuanze",label:"设计原则",children:[{value:"yizhi",label:"一致"},{value:"fankui",label:"反馈"}]}]},{value:"zujian",label:"组件",children:[{value:"basic",label:"Basic",children:[{value:"layout",label:"Layout 布局"},{value:"color",label:"Color 色彩"}]}]}]}]},{source:s(()=>[...t[4]||(t[4]=[a("p",null," 配置 emitPath 为 false,仅返回选中节点的值,而非完整路径数组 ",-1)])]),_:1}),t[20]||(t[20]=a("h2",{id:"值分隔符",tabindex:"-1"},[e("值分隔符 "),a("a",{class:"header-anchor",href:"#值分隔符","aria-label":'Permalink to "值分隔符"'},"")],-1)),t[21]||(t[21]=a("p",null,[e("当需要将选中值以字符串形式存储时,可通过 "),a("code",null,"valueSeparator"),e(" 指定分隔符,组件会自动将数组转换为字符串存储,读取时也会自动还原。")],-1)),i(l,{type:"form",config:[{type:"cascader",name:"cascader",text:"选项",placeholder:"请选择",valueSeparator:"/",options:[{value:"zhinan",label:"指南",children:[{value:"shejiyuanze",label:"设计原则",children:[{value:"yizhi",label:"一致"}]}]},{value:"zujian",label:"组件",children:[{value:"basic",label:"Basic",children:[{value:"layout",label:"Layout 布局"}]}]}]}]},{source:s(()=>[...t[5]||(t[5]=[a("p",null," 配置 valueSeparator 为 '/',选中值将以 'zhinan/shejiyuanze/yizhi' 的字符串形式存储 ",-1)])]),_:1}),t[22]||(t[22]=a("h2",{id:"远程选项",tabindex:"-1"},[e("远程选项 "),a("a",{class:"header-anchor",href:"#远程选项","aria-label":'Permalink to "远程选项"'},"")],-1)),t[23]||(t[23]=a("p",null,"通过接口请求获取选项列表",-1)),i(l,{type:"form",config:[{type:"cascader",name:"cascader",text:"选项",placeholder:"请选择",remote:!0,option:{url:"cascader/remote",root:"data",cache:!0,timeout:5e3,body:{query:""},item:d=>d}}]},{source:s(()=>[...t[6]||(t[6]=[a("p",null," 配置 remote 为 true,然后配置 option 对象,而不是 options 数组 ",-1)])]),_:1},8,["config"]),t[24]||(t[24]=p(`<p>同时在 <code>src/main.ts</code> 中需要自定义实现请求:</p><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><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:#6F42C1;--shiki-dark:#B392F0;"> request</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</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:#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:#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:#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>options 支持传入函数,可根据表单其他字段动态生成选项列表</p><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'cascader'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'cascader'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> text</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;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">mForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, { </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">model</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">formValue</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:#6A737D;--shiki-dark:#6A737D;"> // 根据表单值动态返回选项</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { value: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'a'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'选项A'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, children: [] }</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;">}</span></span></code></pre></div><h2 id="cascader-attributes" tabindex="-1">Cascader Attributes <a class="header-anchor" href="#cascader-attributes" aria-label="Permalink to "Cascader Attributes""></a></h2><table tabindex="0"><thead><tr><th>参数</th><th>说明</th><th>类型</th><th>可选值</th><th>默认值</th></tr></thead><tbody><tr><td>name</td><td>绑定值</td><td>string</td><td>—</td><td>—</td></tr><tr><td>text</td><td>表单标签</td><td>string</td><td>—</td><td>—</td></tr><tr><td>placeholder</td><td>输入框占位文本</td><td>string</td><td>—</td><td>—</td></tr><tr><td>disabled</td><td>是否禁用</td><td>boolean / <a href="https://github.com/Tencent/tmagic-editor/blob/master/packages/form-schema/src/base.ts" target="_blank" rel="noreferrer">FilterFunction</a></td><td>—</td><td>false</td></tr><tr><td>multiple</td><td>是否多选</td><td>boolean</td><td>—</td><td>false</td></tr><tr><td>emitPath</td><td>在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值</td><td>boolean</td><td>—</td><td>true</td></tr><tr><td>checkStrictly</td><td>是否严格的遵守父子节点不互相关联</td><td>boolean / <a href="https://github.com/Tencent/tmagic-editor/blob/master/packages/form-schema/src/base.ts" target="_blank" rel="noreferrer">FilterFunction</a></td><td>—</td><td>false</td></tr><tr><td>valueSeparator</td><td>合并成字符串时的分隔符</td><td>string / <a href="https://github.com/Tencent/tmagic-editor/blob/master/packages/form-schema/src/base.ts" target="_blank" rel="noreferrer">FilterFunction</a></td><td>—</td><td>—</td></tr><tr><td>popperClass</td><td>弹出内容的自定义类名</td><td>string</td><td>—</td><td>—</td></tr><tr><td>remote</td><td>是否为远程搜索</td><td>boolean</td><td>—</td><td>false</td></tr><tr><td>options</td><td>选项数据源</td><td>Array / Function</td><td>—</td><td>—</td></tr><tr><td>option</td><td>远程选项配置</td><td>Object</td><td>—</td><td>—</td></tr><tr><td>onChange</td><td>值变化时触发的函数</td><td><a href="https://github.com/Tencent/tmagic-editor/blob/master/packages/form-schema/src/base.ts" target="_blank" rel="noreferrer">OnChangeHandler</a></td><td>—</td><td>—</td></tr></tbody></table><h2 id="options-item" tabindex="-1">options item <a class="header-anchor" href="#options-item" aria-label="Permalink to "options item""></a></h2><table tabindex="0"><thead><tr><th>参数</th><th>说明</th><th>类型</th><th>可选值</th><th>默认值</th></tr></thead><tbody><tr><td>value</td><td>选项的值</td><td>any</td><td>—</td><td>—</td></tr><tr><td>label</td><td>选项的标签</td><td>string</td><td>—</td><td>—</td></tr><tr><td>children</td><td>子选项</td><td>Array</td><td>—</td><td>—</td></tr></tbody></table><h2 id="option-远程配置" tabindex="-1">option(远程配置) <a class="header-anchor" href="#option-远程配置" aria-label="Permalink to "option(远程配置)""></a></h2><table tabindex="0"><thead><tr><th>参数</th><th>说明</th><th>类型</th><th>可选值</th><th>默认值</th></tr></thead><tbody><tr><td>url</td><td>请求地址</td><td>string</td><td>—</td><td>—</td></tr><tr><td>root</td><td>响应数据的根路径</td><td>string</td><td>—</td><td>—</td></tr><tr><td>cache</td><td>是否缓存请求结果</td><td>boolean</td><td>—</td><td>false</td></tr><tr><td>timeout</td><td>请求超时时间(毫秒)</td><td>number</td><td>—</td><td>—</td></tr><tr><td>body</td><td>请求体</td><td>Object / Function</td><td>—</td><td>—</td></tr><tr><td>item</td><td>数据转换函数,将响应数据转换为选项格式</td><td>Function</td><td>—</td><td>—</td></tr></tbody></table>`,11))])}const f=n(u,[["render",k]]);export{v as __pageData,f as default};
|