element ui级连选择,lazyLoad选择地区
2023-12-28 13:28:25
ui文档上直接给了一函数
先试试看效果是什么,加上let id=0;不然会报错
props: {
lazy: true,
lazyLoad (node, resolve) {
let id = 0;
const { level } = node;
setTimeout(() => {
const nodes = Array.from({ length: level + 1 })//创建一个新数组,数组长度level + 1
.map(item => ({//然后链式调用 map 为这个新数组每一项填充内容
value: ++id,
label: `选项${id}`,
leaf: level >= 2
}));
// 通过调用resolve将子节点数据返回,通知组件数据加载完成
resolve(nodes);
}, 1000);
}
}
- setTimeout模拟的大概是从后端拿到数据的时间
- ?Array.from的作用可以先去搜一下,它返回了一个新的数组
- 链式调用的map对从后端拿到的数组做了处理,如果你试过普通的级联选择器,就造label和value是ui组件必须的,label是下拉框展示的标签,value就是对应的值。还有一个leaf是boolean,判断是不是级联选择器的最后一截,示例是用>=2判断的。
- 最后将处理好的数组放在resolve()里面
node
要传的参数怎么拿?看node参数。现在程序不会报错,并且你已经理解了一大半的代码,可以打印node看看是什么
最后我完成了级联调用的效果
lazyLoad(node, resolve) {
const { level, data } = node //ui组件返回的选中的当前节点
let parentCode
if (data) {
parentCode = data.code
}
/**
* @description: 获取可选地区
* @param {*} level //0-省 ,1-市,2-区
* @param {*} parentCode 是取的上一级的code
* @return {*}
*/
getLocation({ level, parentCode }) //后端接口
.then((res) => {
const result = res.result.map((item) => {
const { level, name, code } = item // 提取属性
return {
label: name, // 修改属性名
value: name, // 修改属性名
code,
level,
leaf: level == 2
}
})
resolve(result)
})
.catch((err) => {
console.warn(err)
})
}
文章来源:https://blog.csdn.net/2301_78916954/article/details/135261424
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!