element el-cascader动态加载数据 (多级联动,落地方案)

简介: 最近需要用到element ui的这个插件做地区的四级联动,但是碰了一些问题:官网的说明太泛泛然,不易看懂网上的教程乱七八糟,代码一堆一堆的看这篇就对了!!!

前言


最近需要用到element ui的这个插件做地区的四级联动,但是碰了一些问题:

  • 官网的说明太泛泛然,不易看懂
  • 网上的教程乱七八糟,代码一堆一堆的
  • 看这篇就对了!!!
  • 效果图 =>

11.png

  • 点击确认后的值

12.png

1. template


   <el-cascader
      size="mini"
      :props="props"
      @change="handleChange"
      v-model="value"
      style="width: 300px"
    ></el-cascader>

//  props => 控制动态加载的配置

// @change => 监听变化

// value => 值


2. methods()


    // 获取省市区街道
    provinceFn(id) {
      let data = {
        up_id: id,
      };
      // 此处是一个promise 直接返回
      return postRequest(url.getlowerlevelarea, data);
    },
    // 监听数据变化
    handleChange(value) {
      console.log(value);
    }


3. data()配置


  data() {
    return {
      value: [],    // 多级联动的值 => 会是一个数组
      props: {
        lazy: true,
        lazyLoad: (node, resolve) => {
          // node 节点数据 node.value => 当前节点的值
          // level: 层级 => 1,2,3,4
          const { level } = node;
          // 动态节点
          const nodes = [];          
          // 为1代表第一次请求
          let type = level == 0 ? "1" : node.value;
          this.provinceFn(type)
            .then((res) => {
              if (res.code == -1) {
                this.msgFn("error", res.message);
                return;
              }
              // 节点数组
              res.data.map((item) => {
                // obj里的键值是官方要求的
                let obj = {
                  value: item.city_id,
                  label: item.city_name,
                  leaf: node.level >= 3, 
                };
                nodes.push(obj);
              });
              // resolve 节点返回
              resolve(nodes);
            })
            .catch((error) => {
              console.log(error);
            });
        },
      },
    };
  }

FAQ



注释其实已经非常详细了,整体思路是这样的:


根据官方文档,首先得知道 lazyLoad方法中的参数node, resolve分别是什么

配置自己的接口请求,我的是地区数据(省市区四级联动)

需要注意的是 props需要在data()里赋值,所以数据请求也要放进去

获取到数据后,需要按照它的规范赋值 => value:值,label:文字,leaf:层级

如果是三级,那么leaf值是=> 0, 1, 2,以此类推。我的是四级,所以是 => node.level >= 3

尽量不要用hover(效果会一闪一闪的,用户体验不好,click最佳)


目录
相关文章
element el-cascader动态编辑赋值后,不回显的解决方法(整理)
element el-cascader动态编辑赋值后,不回显的解决方法(整理)
|
JavaScript 数据格式
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
2333 0
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
|
SQL 缓存 JSON
vue利用级联选择器实现全国省市区乡村五级菜单联动
vue利用级联选择器实现全国省市区乡村五级菜单联动
|
前端开发
elementui解决el-dialog不清空内容的问题,el-dialog关闭时销毁子组件
elementui解决el-dialog不清空内容的问题,el-dialog关闭时销毁子组件
element中el-cascader级联 下拉选择-可单独多选(整理)
element中el-cascader级联 下拉选择-可单独多选(整理)
|
测试技术
【sgLazyCascader】自定义组件:基于el-cascader的懒加载级联菜单,支持异步加载子级菜单
【sgLazyCascader】自定义组件:基于el-cascader的懒加载级联菜单,支持异步加载子级菜单
|
小程序
uni-app:网络状态监测之onNetworkStatusChange与getNetworkType的区别与应用
1、在实际项目开发中,难免涉及到监测网络,下面来具体了解下小程序两种监测网络的方法。 2、这里配置的是 uniapp,微信小程序把 uni. 换成 wx. 即可。
2514 0
uni-app:网络状态监测之onNetworkStatusChange与getNetworkType的区别与应用
|
JavaScript 前端开发 API
vue element plus Cascader 级联选择器
vue element plus Cascader 级联选择器
1969 0
【el-cascader-plus亲测有限】el-cascader级联选择器懒加载+多选功能回显失败解决方案
【el-cascader-plus亲测有限】el-cascader级联选择器懒加载+多选功能回显失败解决方案
2025 0
|
资源调度 JavaScript API
Vue-treeselect:为Vue应用程序提供强大选择器的指南
Vue-treeselect:为Vue应用程序提供强大选择器的指南
2405 0