Cascader级联选择器
适用于分类、组织、区域等树形数据的逐级选择。一个 Cascader 字段默认保存从父节点到叶子节点的值路径,例如 ['north', 'beijing', 'chaoyang']。
如果希望大区、站点分别保存到两个字段,并用上级值请求下级选项,请使用 表单多级联动。
| 需求 | 关键配置 | 绑定值形态 |
|---|---|---|
| 完整路径 | 默认 emitPath: true | 单个路径数组 |
| 只提交选中节点 | emitPath: false | 单个节点值 |
| 多选路径 | multiple: true | 路径数组组成的数组 |
| 可选择父节点 | checkStrictly: true | 取决于是否启用 emitPath |
| 只显示末级文字 | showAllLevels: false | 不改变绑定值结构 |
提示
节点值应唯一且类型一致。显示层级由 showAllLevels 控制,提交路径由 emitPath 控制;只想缩短输入框文字时,不必改变提交值。
复制示例中的结果组件与本地演示数据,见 示例辅助文件。
基础用法
设置 type: 'cascader',用 dicData 提供包含 children 的树形字典。展开并选择叶子节点;expandTrigger 可设置子级展开方式,默认为 hover。
默认值
column.value 提供初始化默认值。路径中的每个值都必须能在对应层级字典中找到;编辑已有数据时,可直接给 v-model 对应字段赋值。
多选
multiple: true 开启多选;collapseTags 折叠标签,maxCollapseTags 设置可见标签数量,collapseTagsTooltip 显示折叠标签的提示。勾选多个叶子节点,观察标签的展开与折叠。
禁用状态
在字段上设置 disabled: true 会禁用整个选择器,已有值仍可回显。
禁用选项
在字典节点上设置 disabled: true 只禁用该选项。适用于停用分类或暂不可选的组织节点。
下拉框样式
弹层通常挂载在页面外层,使用唯一的 popperClass 限定样式范围,避免影响其他级联选择器。
.popperClass .el-cascader-node {
background-color: rgba(0, 0, 0, .2);
}popperClass 指定当前弹层的 class 名称。自定义颜色时保留可读的选中、禁用和悬浮状态。
网络字典
dicUrl 返回完整树形字典,props 映射 name、code 和 children;本例在本地模拟接口,以保证无需外部服务即可操作。选择服务点后可看到完整的路径值。
如果接口一次只返回某一层的数据,应使用下面的懒加载模式,而不是把只有顶层的数组当作完整树。接口响应格式见 表单数据字典。
仅显示最后一级
showAllLevels: false 仅缩短输入框中的文字。选择叶子节点后,结果区仍显示包含父级的完整路径。
选中单节点
emitPath: false 只提交选中节点的值。下面选择同一个服务点,对比默认路径数组与末级编码;修改 emitPath 后,也要相应调整编辑回显的数据结构。
任意一级
checkStrictly: true 取消父子节点的选中关联,可以单独选择父级节点。常用于允许选择整个组织或某个具体部门的业务。
搜索
设置 filterable: true,输入“北京”或“西湖”筛选服务点。默认搜索节点标签与父级标签;选中结果后,下方展示绑定路径。
搜索范围还受 showAllLevels 影响:仅显示最后一级时,默认只按末级标签匹配。懒加载场景只能搜索已加载的节点;跨全量数据搜索需要业务接口支持。
自定义模版
使用字段 prop 名称加 Type 的插槽定制选项内容,例如追加数量信息。字段绑定值与字典结构保持原配置。
懒加载
设置 lazy: true 后,通过 lazyLoad(node, resolve) 按层提供子节点。根节点的 level 为 0;返回项用 leaf: true 标识末级,避免继续加载。
依次展开大区、站点、服务点,观察加载记录只包含已展开的层级。此处同步返回固定数据;接入接口时在请求成功后调用 resolve(list),失败或无数据时调用 resolve([]),让加载状态结束。
异步请求应处理失败并避免组件卸载后继续更新示例状态。每次加载调用一次 resolve,不要漏掉空数据分支。
