在这里插入图片描述

elementUI提供了 getCheckedNodes 这个方法 可以拿到父级id 但会出现下边这个问题
在这里插入图片描述

当我们半选的时候 拿到的只有最后一级的value 是拿不到父级的value。这咋整呢
试一下用递归

<template>
  <div class="app-container">
    <div class="ranges">
      <div style="display:flex">
         <span class="isall">这个是用递归的方法</span>
        <el-cascader ref="readLvlRef" style="width:300px;margin-top:2px" :options="deptNameOptions" :props="cascaderOpt"
          v-model="readLvl" @change="downloadChange" collapse-tags clearable></el-cascader>



        <span class="isall">这个是用elementui提供的方法</span>
         <el-cascader ref="downLoadLvlRef" style="width:300px;margin-top:2px" :options="deptNameOptions"
          v-model="downLoadLvl" :props="cascaderOpt" collapse-tags :show-all-levels="false" clearable
          @change="getCheckedNodes"></el-cascader>

      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'CtrlDocUpdatePage',
  components: {},
  props: {},
  data() {
    return {
      currentCtrlDoc: {},
      cascaderOpt: {
        multiple: true,
        emitPath: false,
      },
      readLvl: [],
      downLoadLvl: [],
      getAllVal:[],
      deptNameOptions: [
        {
          value: 1,
          label: '东南',
          children: [
            {
              value: 2,
              label: '上海',
              children: [
                { value: 3, label: '普陀' },
                { value: 4, label: '黄埔' },
                { value: 5, label: '徐汇' },
              ],
            },
            {
              value: 7,
              label: '江苏',
              children: [
                { value: 8, label: '南京' },
                { value: 9, label: '苏州' },
                { value: 10, label: '无锡' },
              ],
            },
            {
              value: 12,
              label: '浙江',
              children: [
                { value: 13, label: '杭州' },
                { value: 14, label: '宁波' },
                { value: 15, label: '嘉兴' },
              ],
            },
          ],
        },
        {
          value: 17,
          label: '西北',
          children: [
            {
              value: 18,
              label: '陕西',
              children: [
                { value: 19, label: '西安' },
                { value: 20, label: '延安' },
              ],
            },
            {
              value: 21,
              label: '新疆维吾尔族自治区',
              children: [
                { value: 22, label: '乌鲁木齐' },
                { value: 23, label: '克拉玛依' },
              ],
            },
          ],
        },
      ],
      saveNodeTmp: [],
    }
  },
  created() {},
  methods: {
    getCheckedNodes() {
      let downLoadLvl = this.$refs.downLoadLvlRef.getCheckedNodes()
      downLoadLvl.forEach(item=>{
        console.log(item.value)
      })
    },

    // 获取全部节点
    findAllNode(data) {
      if (!this.saveNodeTmp.includes(data.value)) {
        this.saveNodeTmp.push(data.value)
      }
      if (data.parent) {
        this.findAllNode(data.parent)
      }
    },
    // change时
    downloadChange(data) {
      let readSelectedAllNode = this.$refs.readLvlRef.getCheckedNodes()
      let readSelectedNode = []
      // 获取所选的全部节点
      this.saveNodeTmp = []
      readSelectedAllNode.forEach(item => {
        this.findAllNode(item)
      })
      readSelectedNode = [...this.saveNodeTmp]
      console.log(readSelectedNode)
    },
  },

  watch: {},
}
</script>
<style lang="scss" scoped>
</style>
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐