vue3 cascader级联选择器(无限级 动态加载)
Posted 仲夏の梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue3 cascader级联选择器(无限级 动态加载)相关的知识,希望对你有一定的参考价值。
效果图:
<template>
<div>
<el-cascader v-model="state.categoryEcho"
:props="propsCascader"
:show-all-levels="false"
@change="getCascader">
</el-cascader>
</div>
</template>
<script setup>
import reactive from 'vue'
import getsubcategories from '@/api/backlog'
const state = reactive(
packParams:
id: 0, // 默认0为一级
,
categoryEcho: [], // el-cascader绑定数组
)
const propsCascader =
lazy: true, // 开启动态加载子节点
checkStrictly:true,
lazyLoad: cascaderLazyLoad, // 加载动态数据的方法,仅在 lazy 为 true 时有效
// isParent为1则有下一级为0则没有下一级
// 接口返回的 cateId cateName 需要赋值给value label
// 通过cateId 获取下一级
const cascaderLazyLoad= async (node, resolve)=>
let params = state.packParams.id
if (node.level === 0)
await getsubcategories(params).then((res) =>
let code, data = res.data
if (code === 200)
state.cateList = data.map((item) =>
item.value = item.cateId
item.label = item.cateName
if (item.isParent === 0)
item.leaf = true
else
item.leaf = false;
return item
)
)
resolve(state.cateList)
if (node.data.isParent === 0)
resolve([])
if (node.level !== 0)
getsubcategories(node.data.cateId).then((res) =>
let code, data = res.data
let list = []
if (code === 200)
list = data.filter((item) =>
item.value = item.cateId
item.label = item.cateName
if (item.isParent === 0)
item.leaf = true
else
item.leaf = false
return item
)
resolve(list)
)
const getCascader = (value) =>
if (value)
//这里可以获取选中的ID数组
</script>
注:还有很多配置可参考element plus 官网 官网地址
以上是关于vue3 cascader级联选择器(无限级 动态加载)的主要内容,如果未能解决你的问题,请参考以下文章
基于Element Cascader 级联选择器实现动态获取数据