element ui 级联选择器懒加载
最近项目中需要使用链接选择器将展开项的值作为参数调用接口,找了好多方法,然后使用了动态加载子节点,与 lazyLoad 方法结合使用,实现了
代码:
<el-form-item label="地点:" prop="locale">
<el-cascader
:props="props"
v-model="SLA.locale"
:options="rule.building"
collapse-tags
/>
</el-form-item>
<script>
export default{
data(){
return{
props: {
multiple: true, //是否多选
checkStrictly: true, //是否严格的遵守父子节点不互相关联 我这里是要多选,要是单选的这个两个属性可以不用加
label: 'name',//注意,这个label值显示的需要每次调接口时返回的数据中字段都要为'name',不然会出现每层的label数据都是一样的
lazy: true, //是否动态加载子节点
async lazyLoad(node, resolve) { //function(node, resolve),
node
为当前点击的节点,resolve
为数据加载完成的回调(必须调用) const { data } = node
if (data && data.children && data.children.length !== 0) {
return resolve([])
}
const params = {
}
if (data) { //判断data是不是空,如果不是,将data中的某个数据拿出来作为参数传递
params['block'] = data['siteId'] || ''
params['blId'] = data['blId'] || ''
params['flId'] = data['flId'] || ''
}
// console.log(data)
// console.log(params)
try {
// const r = await getLocation(params) 调用接口
const targetData = []
for (const item of r.data) {
//将拿到的数据一层一层拿出来处理
const temp = {
siteId: item['siteId'] || '',
blId: item['blId'] || '',
flId: item['flId'] || '',
rmId: item['rmId'] || '',
name: item['name'] || '未命名',
leaf: item['leaf'], //后端数据中leaf一开始要为false,最后一次的时候才为true
children: item['children'] || []
}
temp['value'] = temp['rmId'] || temp['flId'] || temp['blId'] || temp['siteId'] //将拿出来的值从小到大赋值
targetData.push(temp)//然后push到节点中
}
resolve(targetData)
} catch (e) {
console.log(e)
resolve([])
}
}
},
SLA:{
locale: [],
},
rule:{
building: []
}
},
methods:{
}
}
}
</script>
标签:
element ui 级联选择器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本