当前位置:   article > 正文

element ui级连选择,lazyLoad选择地区_element ui 的 lazyload

element ui 的 lazyload

ui文档上直接给了一函数

先试试看效果是什么,加上let id=0;不然会报错

  1. props: {
  2. lazy: true,
  3. lazyLoad (node, resolve) {
  4. let id = 0;
  5. const { level } = node;
  6. setTimeout(() => {
  7. const nodes = Array.from({ length: level + 1 })//创建一个新数组,数组长度level + 1
  8. .map(item => ({//然后链式调用 map 为这个新数组每一项填充内容
  9. value: ++id,
  10. label: `选项${id}`,
  11. leaf: level >= 2
  12. }));
  13. // 通过调用resolve将子节点数据返回,通知组件数据加载完成
  14. resolve(nodes);
  15. }, 1000);
  16. }
  17. }
  • setTimeout模拟的大概是从后端拿到数据的时间
  •  Array.from的作用可以先去搜一下,它返回了一个新的数组
  • 链式调用的map对从后端拿到的数组做了处理,如果你试过普通的级联选择器,就造label和value是ui组件必须的,label是下拉框展示的标签,value就是对应的值。还有一个leaf是boolean,判断是不是级联选择器的最后一截,示例是用>=2判断的。没有leaf:true,级联选择器可以一直选下去。
  • 最后将处理好的数组放在resolve()里面

node

要传的参数怎么拿?看node参数。现在程序不会报错,并且你已经理解了一大半的代码,可以打印node看看是什么,就是点击的这一级的参数。

最后我完成了级联调用的效果

  1. lazyLoad(node, resolve) {
  2. const { level, data } = node //ui组件返回的选中的当前节点
  3. let parentCode
  4. if (data) {
  5. parentCode = data.code
  6. }
  7. /**
  8. * @description: 获取可选地区
  9. * @param {*} level //0-省 ,1-市,2-区
  10. * @param {*} parentCode 是取的上一级的code
  11. * @return {*}
  12. */
  13. getLocation({ level, parentCode }) //后端接口
  14. .then((res) => {
  15. const result = res.result.map((item) => {
  16. const { level, name, code } = item // 提取属性
  17. return {
  18. label: name, // 修改属性名
  19. value: name, // 修改属性名
  20. code,
  21. level,
  22. leaf: level == 2
  23. }
  24. })
  25. resolve(result)
  26. })
  27. .catch((err) => {
  28. console.warn(err)
  29. })
  30. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号