el-cascader动态加载

1. 需求:实现一个多层级的级联选择器,点击一级,动态加载下一级
<el-cascader-panel
        ref="cascader"
        @change="change"
        :props="props"
        :options="options"
        :show-all-levels="false"
      >
</el-cascader-panel>
props: {
	multiple: true,
	emitPath: false,
	lazy: true,
	async lazyLoad(node, resolve) {
		console.log(node)
		const { level } = node
		let stop_level = 4
		let list = []
		// 超过最大层级,停止向下加载
		let callback = () => {
			resolve(
				(list || []).map(ele => {
					return Object.assign(ele, {
						leaf: level >= stop_level,
						})
					})
				)
		}
		if (level == 1) {
			const { value } = node
			let nodes = await getOrgByType(value)
			let _nodes = nodes.data.map(item => ({
				value: item.id,
				label: item.orgName,
			}))
			resolve(_nodes)
			} else if (level == 2) {
				const { value } = node
				let nodes = await getDeptByOrgId(value)
				let _nodes = nodes.data.map(item => ({
					value: item.id,
					label: item.deptName,
					orgSid: item.orgSid,
				}))
				resolve(_nodes)
			} else if (level == 3) {
				const { value, orgSid } = node.data
				let obj = {
					orgId: orgSid,
					deptId: value,
					leaf: true,
				}
				let nodes = await getOrgUser(obj)
				let _nodes = nodes.data.map(item => ({
					value: item.userId,
					label: item.personName,
				}))
				resolve(_nodes)
			} else {
				callback()
			}
		},
	},
change(e) {
	let nodeObj = this.$refs["cascader"].getCheckedNodes()
	console.log("节点的值", e)
	console.log("节点全部数据", nodeObj)
},
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-cascader组件可以通过动态加载次级选项的方法来实现。一种常见的方法是利用地址传递的方式,通过动态修改options来实现。例如,可以在options中绑定一个变量,并通过修改这个变量的值来动态更新次级选项。 另一种方法是使用v-if来控制el-cascader组件的显示与隐藏。可以给el-cascader组件添加v-if="editCascaderVisible",只有在满足条件时才显示组件。通过改变editCascaderVisible的值,可以触发el-cascader组件重新渲染,从而实现动态加载次级选项的效果。 总体来说,目前网上提供的解决办法主要有两种思路。一种是手动调用后端接口,逐个获取下一层的选项并拼接成树结构,然后将生成的树结构赋值给el-cascader组件的options选项。另一种是每次重新渲染el-cascader组件,将其当作首次加载来处理,以触发lazyLoad方法。第二种方法更为简便和推荐。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Element中的Cascader(级联列表)动态加载省\市\区数据的方法](https://download.csdn.net/download/weixin_38546024/14905688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [el-cascader 动态加载选项、编辑时数据回显问题 、单选不加载下一级节点、点击标签选中](https://blog.csdn.net/qq_16382227/article/details/129735904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值