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动态编辑赋值后,不回显的解决方法(整理)
|
前端开发
cascader 三级联动数据回显
cascader 三级联动数据回显
1404 0
|
数据格式
Element el-cascader 级联选择器详解
本文目录 1. 概述 2. 数据绑定 2.1 默认数据绑定 2.2 指定绑定数据格式 3. 常用功能 3.1 修改触发方式 3.2 增加清空按钮 3.3 可搜索 3.4 选中项只显示最后一级 3.5 可选中任意一级 3.6 面板样式 3.7 自定义节点内容 4. 动态加载下级 5. 小结
4852 0
|
JavaScript 数据格式
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
2512 0
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
【el-cascader-plus亲测有限】el-cascader级联选择器懒加载+多选功能回显失败解决方案
【el-cascader-plus亲测有限】el-cascader级联选择器懒加载+多选功能回显失败解决方案
2211 0
Element UI【级联选择器】el-cascader 获取选中内容的 label 数据,鼠标悬浮显示超长内容
Element UI【级联选择器】el-cascader 获取选中内容的 label 数据,鼠标悬浮显示超长内容
2420 3
|
定位技术 API 数据格式
Element UI【详解】el-cascader 级联选择器 - 行政区划选择(可以选择任意一级),限定选择范围,获取并解析选中的节点
Element UI【详解】el-cascader 级联选择器 - 行政区划选择(可以选择任意一级),限定选择范围,获取并解析选中的节点
4417 0
element中el-cascader级联 下拉选择-可单独多选(整理)
element中el-cascader级联 下拉选择-可单独多选(整理)
|
存储 前端开发 Java
Element el-upload 文件上传/图片上传/拖拽上传/附带参数/附带请求头部详解
文目录 1. 前言 2. 基本用法 2.1 前端部分 2.2 后端部分 2.3 获取后端返回信息 3. 外观功能介绍 3.1 拖拽上传 3.2 显示图片 3.3 设置文件列表样式 3.4 显示提示信息 4. 事件功能介绍 4.1 限制上传文件数量 4.2 限制上传文件类型和大小 4.3 移除文件处理 4.4 手动上传 5. 附带参数 6. 附带请求头部 7. 小结
8562 0
|
数据库
vue+elementui中,el-select多选下拉列表中,如何同时获取:value和:label的值?
vue+elementui中,el-select多选下拉列表中,如何同时获取:value和:label的值?

热门文章

最新文章