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(`

同时在 src/main.ts 中需要自定义实现请求:

typescript
app.use(MagicForm, {
  request: async (options: any) => {
    // 自定义请求实现
  },
});

动态选项

options 支持传入函数,可根据表单其他字段动态生成选项列表

typescript
{
  type: 'cascader',
  name: 'cascader',
  text: '选项',
  options: (mForm, { model, formValue }) => {
    // 根据表单值动态返回选项
    return [
      { value: 'a', label: '选项A', children: [] }
    ];
  }
}

Cascader Attributes

参数说明类型可选值默认值
name绑定值string
text表单标签string
placeholder输入框占位文本string
disabled是否禁用boolean / FilterFunctionfalse
multiple是否多选booleanfalse
emitPath在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值booleantrue
checkStrictly是否严格的遵守父子节点不互相关联boolean / FilterFunctionfalse
valueSeparator合并成字符串时的分隔符string / FilterFunction
popperClass弹出内容的自定义类名string
remote是否为远程搜索booleanfalse
options选项数据源Array / Function
option远程选项配置Object
onChange值变化时触发的函数OnChangeHandler

options item

参数说明类型可选值默认值
value选项的值any
label选项的标签string
children子选项Array

option(远程配置)

参数说明类型可选值默认值
url请求地址string
root响应数据的根路径string
cache是否缓存请求结果booleanfalse
timeout请求超时时间(毫秒)number
body请求体Object / Function
item数据转换函数,将响应数据转换为选项格式Function
`,11))])}const f=n(u,[["render",k]]);export{v as __pageData,f as default};