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动态编辑赋值后,不回显的解决方法(整理)
element中el-cascader级联 下拉选择-可单独多选(整理)
element中el-cascader级联 下拉选择-可单独多选(整理)
|
JavaScript 数据格式
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
2489 0
vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
Element的el-table行列错位对不齐问题处理
本文目录 1. 问题表现 2. 问题发现 3. 问题处理 4. 另一种处理方案
6363 0
Element的el-table行列错位对不齐问题处理
|
小程序
uni-app:网络状态监测之onNetworkStatusChange与getNetworkType的区别与应用
1、在实际项目开发中,难免涉及到监测网络,下面来具体了解下小程序两种监测网络的方法。 2、这里配置的是 uniapp,微信小程序把 uni. 换成 wx. 即可。
2669 0
uni-app:网络状态监测之onNetworkStatusChange与getNetworkType的区别与应用
|
测试技术
【sgLazyCascader】自定义组件:基于el-cascader的懒加载级联菜单,支持异步加载子级菜单
【sgLazyCascader】自定义组件:基于el-cascader的懒加载级联菜单,支持异步加载子级菜单
|
JavaScript 前端开发 API
vue element plus Cascader 级联选择器
vue element plus Cascader 级联选择器
2253 0
|
3月前
|
JavaScript 前端开发 测试技术
前端开发环境搭建:Node.js、npm与VSCode指南
在当今快速发展的前端开发领域,一个高效、稳定的开发环境是提升生产力的关键。Node.js、npm和VSCode作为现代前端开发的三大核心工具,能够帮助开发者轻松管理依赖、运行脚本以及编写高质量代码。本文将介绍如何搭建这一开发环境,并深入探讨几个关键方面,助你快速上手。
|
存储 前端开发 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. 小结
8529 0
【el-cascader-plus亲测有限】el-cascader级联选择器懒加载+多选功能回显失败解决方案
【el-cascader-plus亲测有限】el-cascader级联选择器懒加载+多选功能回显失败解决方案
2197 0

热门文章

最新文章