解决element-ui中 el-cascader 级联选择器 最后一级数据为空显示暂无数据问题

文章讲述了在使用el-cascader组件时遇到的最后级别没有数据显示的问题,原因是后端返回的子级children为空。解决方案包括递归处理数据以确保所有层级都有children属性,并在选择最后一级后关闭下拉框。代码示例展示了如何处理数据以及在选项变更时的响应式操作。
摘要由CSDN通过智能技术生成

产生问题原因:

el-cascader 最后一级暂无数据是因为后端返回子级children为空,官网的children并不为空。

解决方法:

<el-cascader placeholder="请选择"
             v-model="dataForm.caseType"
             :options="caseTypeList"
             :props="{ label:'name',value:'id',children:'children',checkStrictly: true  }"
             clearable
             :show-all-levels="false"
             ref="cascader"
             @change="cascaderChange"></el-cascader>
    getTreeData (datas) {
      // console.log(datas)
      let data = []
      datas.map((item) => {
        if (item.children && item.children.length > 0) {
          let dadax = {
            name: item.name, // 这是需要展示的数据 我的数据是name,所以label对应的是name
            id: item.id,
            children: this.getTreeData(item.children)
          }
          data.push(dadax)
        } else {
          let dadax = {
            name: item.name,
            id: item.id
          }
          data.push(dadax)
        }
        return data
      })
      return data
    },
    cascaderChange (v) {
      let nodesObj = this.$refs['cascader'].getCheckedNodes()[0]
      this.dataForm.caseType = nodesObj.data.id
      // 选择最后一级后收起选择框
      !nodesObj.hasChildren && this.$refs['cascader'].toggleDropDownVisible()
    },
    init () {
      this.$nextTick(() => {
        this.$http.get('').then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg)
          }
          this.caseTypeList = this.getTreeData(res.data)
        })
      })
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值