elementui Cascader 级联选择使用心得

相信大家对于elementui并不陌生,作为适配Vue的优秀UI框架之一,一直被所有的开发者痛并快乐着。今天要记录的就是里边的主角之一Cascader。

首先先介绍一下**Cascader --->**当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择。

html 复制代码
<el-cascader :options="options" clearable></el-cascader>

1、级联选择器经常会用来做地区的选择,在使用过程中发现了第一个有意思的地方----清空,比如我们经常会给元素添加clearable属性

html 复制代码
<el-cascader :options="options" clearable></el-cascader>

正常选中没问题 当点击了清空按钮之后 下拉的面板应该回到之前没选中的状态,但没有回到之前的状态

解决办法:

html 复制代码
<el-cascader ref="addressCascader" :props="addressOptions" filterable clearable v-model="selectOptions" @change="addressChange" @visible-change="visibleChange"></el-cascader>
javascript 复制代码
addressChange(data){
    if(data && data.length == 0){
        this.$refs['addressCascader'][0].$refs.panel.checkedValue = [] // 清空选中值
		this.$refs['addressCascader'][0].$refs.panel.clearCheckedNodes() // 清空级联选择器选中状态
		this.$refs['addressCascader'][0].$refs.panel.activePath = [] // 清除高亮
		this.$refs['addressCascader'][0].$refs.panel.syncActivePath() // 初始化(只展示一级节点)
	}
}

2、面板展开可直接看到选中的数据

javascript 复制代码
visibleChange(val) {
	if(val) {
		if (this.$refs['addressCascader']) {
			if(this.$refs['addressCascader'][0].getCheckedNodes()[0]){
				this.$refs['addressCascader'][0].$refs.panel.activePath = this.$refs['addressCascader'][0].getCheckedNodes()
			}
		}
	}
}

3、动态加载数据

javascript 复制代码
addressOptions: {
	lazy: true,
	lazyLoad: (node, resolve) => {
		const { level } = node
		const nodes = []
		let type = level ? level + 1 : 1
		this.$http({
			url:this.$http.adornUrl('/business', '/dictprovince/selectList'),
			method: 'post',
			data: { level: type , parentCode: node.value }
		}).then(res => {
		    //console.log("保单归属地", res.data.data)
			res.data.data.map(item => {
			let area = {
				    value: item.code,
					label: item.name,
					leaf: item.level >= 3,
			    };
			    nodes.push(area)
		    })
			resolve(nodes)
	    })
    }
}

动态加载数据需要注意的是leaf的值 如果是二级菜单level>=2,三级菜单level>=3

记录使用当中遇到的问题,不定期更新~

相关推荐
Setsuna_F_Seiei10 小时前
前端的 AI 学习之路 01 之 Agent API 调用 - 和 Agent 的基础对话
前端·人工智能·ai编程
threerocks11 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
徐小夕11 小时前
3分钟从想法到Agent上线:我们开源了一款AI可视化工作流“IDE”
前端·算法·github
ly768912 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
why技术13 小时前
eli5,我觉得这个全网在吹的技能,使用体验真的很一般啊。
前端·人工智能·后端
excel13 小时前
记录升级 nuxt3 到 nuxt4 记录
前端
剑胆琴心静水深流13 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
前端snow13 小时前
ai agent -- Memory汇总
前端
ITresearchGuest14 小时前
AI 焦虑下,前端该何去何从
前端·人工智能
沙盘客14 小时前
AFSIM 示例解读(03)· 六自由度飞行仿真 six_dof(下):机场运作与弹道导弹投送
java·javascript·经验分享