如何使用el-cascader组件写下拉级联多选及全选功能

 更新时间:2024年03月25日 09:56:29   作者:__十七  
这篇文章主要介绍了如何使用el-cascader组件写下拉级联多选及全选功能,因为是有全选的功能,所以不能直接使用el-cascader组件,?而是选择使用el-select组件,?在此组件内部使用el-cascader-panel级联面板,感兴趣的朋友跟随小编一起看看吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

样式

说明: 级联选择器中加上全选的按钮, 并且保证数据响应式。

思路

  • 因为是有全选的功能,所以不能直接使用el-cascader组件, 而是选择使用el-select组件, 在此组件内部使用el-cascader-panel级联面板
  • 全选按钮也是写在el-select组件中, 并且去监听全选按钮的状态, 根据全选的状态, 决定级联面板的数据与样式
  • 如果想要获取到最终选择的数据, 还是取级联面板绑定的值,而不是select的值。

代码实现

template:

注意:
1,el-select组件中,必须要写入一个el-option组件, 可以隐藏, 但必须存在

2,选中的数据响应式绑定的其实是级联面板的数据,同步到了select中,并且满足其展示的内容,比如“已选中2项”

 <el-form-item>
        <div class="theme-date theme">
          <div class="theme-date-prepend">功能模块</div>
          <el-select v-model="selectModuleData">
            <el-option style="display: none" value=""></el-option>
            <el-checkbox class="allselect" v-model="allSelectModule"
              >全选</el-checkbox
            >
            <el-cascader-panel
              ref="cascaderModule"
              :options="treeList"
              v-model="cascaderModuleData"
              popper-class="popper-select"
              :show-all-levels="false"
              :props="cascaderProp"
              clearable
            >
            </el-cascader-panel>
          </el-select>
        </div>
      </el-form-item>

script:

// data数据:
cascaderProp: {
        multiple: true,
        value: "name",
        label: "name",
        children: "children",
      },
allSelectModule: false,
cascaderModuleData: [],
selectModuleData: null,
// watch
watch: {
// 监听多选按钮是否被勾选
    allSelectModule: {
      immediate: true,
      handler(newVal) {
        if (newVal) {
        /// 执行的方法,可以在下面的methods中寻找
          this.cascaderAllSelect();
        } else {
          if(!this.$refs.cascaderModule) return
          this.$refs.cascaderModule.clearCheckedNodes();
          this.$refs.cascaderModule.checkedValue = []; // 清空选中值
          this.cascaderModuleData = [];
          this.$refs.cascaderModule.activePath = []; // 清除高亮
          this.$refs.cascaderModule.syncActivePath(); // 初始化(只展示一级节点)
        }
      },
    },
    // 监听级联面板绑定的数据去同步select的数据, 让其显示在选择框中
    cascaderModuleData: {
      immediate: true,
      handler(newVal) {
        if (newVal.length === 0) {
          this.selectModuleData = "";
          if(!this.$refs.cascaderModule) return
          this.$refs.cascaderModule.activePath = []; // 清除高亮
          this.$refs.cascaderModule.syncActivePath(); // 初始化(只展示一级节点)
        } else {
          this.selectModuleData = `已选${newVal.length}项`;
        }
      },
    },
  },
/// methods
// 级联选择器全选, 其中moduleArray表示的是级联面板绑定的数据,表示如果此时没有全选的话那就将所有的数据,赋值到级联面板中,这样在显示中,就表示全选的状态。
    cascaderAllSelect() {
      if (this.cascaderModuleData.length !== this.moduleArray.length) {
        this.cascaderModuleData = this.moduleArray;
      }
    },
// 直接获取级联面板的数据cascaderModuleData, 作为参数提交即可

到此这篇关于如何使用el-cascader组件写下拉级联多选及全选功能的文章就介绍到这了,更多相关el-cascader下拉级联多选内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • vue设置页面超时15分钟自动退出登录的方法详解

    vue设置页面超时15分钟自动退出登录的方法详解

    当用户登录后,如果长时间未操作页面这个时候需要自动退出登录回到登录页面,本文将给大家介绍一下vue设置页面超时15分钟自动退出登录的方法,感兴趣的同学可以自己动手试一下
    2023-10-10
  • vue3实现动态侧边菜单栏的几种方式简单总结

    vue3实现动态侧边菜单栏的几种方式简单总结

    在做开发中都会遇到的需求,每个用户的权限是不一样的,那他可以访问的页面(路由)可以操作的菜单选项是不一样的,如果由后端控制,我们前端需要去实现动态路由,动态渲染侧边菜单栏,这篇文章主要给大家介绍了关于vue3实现动态侧边菜单栏的几种方式,需要的朋友可以参考下
    2024-02-02
  • 在Linux服务器上部署vue项目

    在Linux服务器上部署vue项目

    这篇文章介绍了在Linux服务器上部署vue项目的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • 实现一个 Vue 吸顶锚点组件方法

    实现一个 Vue 吸顶锚点组件方法

    这篇文章主要介绍了实现一个 Vue 吸顶锚点组件方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 详解使用vuex进行菜单管理

    详解使用vuex进行菜单管理

    本篇文章主要介绍了详解使用vuex进行菜单管理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Vuex?localStorage的具体使用

    Vuex?localStorage的具体使用

    本文主要介绍了Vuex?localStorage的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • vue源码入口文件分析(推荐)

    vue源码入口文件分析(推荐)

    这篇文章主要介绍了vue源码入口文件分析(推荐),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue?element?ui表格相同数据合并单元格效果实例

    vue?element?ui表格相同数据合并单元格效果实例

    工作中遇到需要根据单元格某个属性合并,特此记录下,下面这篇文章主要给大家介绍了关于vue?element?ui表格相同数据合并单元格效果的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 深入探讨Vue.js组件和组件通信

    深入探讨Vue.js组件和组件通信

    这篇文章主要和大家一起深入探讨Vue.js组件和组件通信的相关资料,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • vue菜单栏自适应折叠功能示例

    vue菜单栏自适应折叠功能示例

    这篇文章主要介绍了vue菜单栏自适应折叠,我这里使用的是el-menu导航菜单,监听页面宽度的改变,来改变导航菜单的折叠和展开,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01

最新评论

?


http://www.vxiaotou.com