element-ui cascader级联选择器,使用getCheckedNodes()获取选择对象参数信息,及如何使用props自定义设置value、label、children的键名

本文介绍如何在 ElementUI 的 Cascader 组件中自定义属性,以便于获取节点的详细信息,同时展示了如何根据后端返回的数据格式调整级联选择器的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求一:

我需要在cascader级联选择后,拿到当前选择对象的其他参数信息,而不单单只获取到选择的value值

在这里插入图片描述
如上图,ElementUI 提供了这个获取所选节点的信息函数 getCheckedNodes,正好解决了我需要当前节点的其他信息,不单单只是选择时返回的 value

需求二:

后端返回的数组,并不是cascader级联选择器默认的value,label,children怎么修改成当前的键值来循环呢?

在这里插入图片描述

但至于怎么用,文档都没有给出例子,所以这里补充一下用法,直接上代码:

<template>
  <el-cascader
    ref="cascader"
    :props="customProps"
    :options="optionsList"
    filterable
    clearable
    @change="handleChange"
  />
</template>
<script>
	export default {
	  data() {
        return {
	      optionsList: [
			{
				child: [{
					key: "/collect-article/article-list",
					name: "文章采集列表",
					path: "/collect-article.html#/article-list"
				}],
				icon: "",
				key: "/collect-article/*",
				name: "官网文章采集",
				show: true,
			},{
				child: [{
					key: "/user-manange/user-list",
					name: "人员列表",
					path: "/user-manange.html#/user-list"
				},
				{
					key: "/user-manange/user-rbac",
					name: "人员权限",
					path: "/user-manange.html#/user-rbac"
				}],
				icon: "",
				key: "/user-manange/*",
				name: "人员管理",
				show: true
			}
		  ],
	      customProps: { 
	        multiple: true,  // 启用多选
	        emitPath: false, // 只返回该节点的值
	        value: 'path',   // 自定义当前数组的键名
	        label: 'name',
	        children: 'child'
	      }
	    }
	  },
	},
	methods:{
		handleChange(val){
			let nodesInfo = this.$refs['cascader'].getCheckedNodes()
			console.log('nodesInfo>>>>>',nodesInfo)
		}
	}
</script>
自定义键名后的级联选择器:

在这里插入图片描述

选择后输出的nodes节点信息:

在这里插入图片描述

完美解决了上面两个问题,收场 ~

在这里插入图片描述

### 实现 `el-cascader` 获取选中值的方法 在 Element UI 的 `el-cascader` 组件中,可以通过其绑定的模型 (`v-model`) 来获取当前选中的值。该组件支持多种配置选项来满足不同的需求。 #### 属性说明 以下是与获取选中值相关的常用属性及其功能描述: - **`v-model`**: 双向绑定的数据源,用于存储用户选择的结果。当用户完成选择时,这个变量会被更新为所选节点对应的值数组[^1]。 - **`:options`**: 定义级联菜单的数据结构,通常是一个嵌套的对象数组。 - **`:props`**: 自定义配置项对象,可以用来指定如何解析数据源中的字段名称(如 labelvalue 等)。默认情况下,它会查找 `label` 和 `value` 字段作为显示文本和实际值[^2]。 #### 示例代码 下面提供了一个完整的示例代码片段,展示如何通过 Vue.js 使用 `el-cascader` 并获取用户的选中值。 ```vue <template> <div> <!-- 级联选择器 --> <el-cascader popper-class="special-cascader" v-model="selectedValue" :options="options" :props="{ checkStrictly: true }" @change="handleCascaderChange" clearable ></el-cascader> <!-- 显示选中结果 --> <p>已选中的值:{{ selectedValue }}</p> </div> </template> <script> export default { data() { return { // 存储选中值 selectedValue: [], // 数据源 options: [ { value: 'guide', label: '指南', children: [ { value: 'disciplines', label: '分部' }, { value: 'introduce', label: '介绍' } ] }, { value: 'component', label: '组件', children: [{ value: 'basic', label: '基础组件' }] } ] }; }, methods: { handleCascaderChange(value) { console.log('用户选择了:', value); } } }; </script> ``` #### 关键点解释 1. **双向绑定**:通过 `v-model="selectedValue"` 将选中状态同步到组件外部的状态管理中。每当用户做出新选择时,`selectedValue` 都会被自动更新[^1]。 2. **事件监听**:利用 `@change` 监听器捕获每次变化后的回调函数逻辑,在此可以执行额外的操作或者记录日志等处理流程[^2]。 3. **自定义 Props**:如果原始 JSON 结构不符合预期,则可通过设置 `props` 参数调整映射关系,比如更改 key 名称为其他形式 (例如 name/id 替代 label/value)。 --- ###
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值