解决el-cascader中树型结构自定义显示层级及编辑时数据回显

2 篇文章 0 订阅

使用el-cascader做多层级菜单,如果定义了最后一级不能做为父级(不能有子级)情况,则在级联菜单中,就不要显示最后一层子级菜单。可以通过再次查询数据库获取所需要的层级菜单,但是小编不想再查数据库,所以通过对数组过滤筛选出所要的数据。

1、未处理情况,显示了 ,上图:

2、变成两级

 3、变成1级

4、代码,使用箭头函数写,不喜欢箭头函数往下看:

   // 添加节点
    append (data) {
      this.dialogFormVisible = true
      this.parentCategoryList = this.getTreeData(this.dataList, 2)
    },

    // 递归判断列表,把children设为undefined
    // num 设定显示的层级
    getTreeData (data, num) {
      data.forEach(v => {
        console.log(v)
        if (v.catLevel <= num) {
          if (v.catLevel === num) {
            // children若为空数组,则将children设为undefined
            v.children = undefined
          } else {
            // children若不为空数组,则继续 递归调用 本方法
            this.getTreeData(v.children, num)
          }
        }
      })
      return data
    }

 5、非箭头函数写法:


    // 递归判断列表,把最后层级的children设为undefined
    // num 显示的层级
    getTreeData (data, num) {
      for (let i = 0; i < data.length; i++) {
        if (data[i].catLevel <= num) {
          if (data[i].catLevel === num) {
            // children若为空数组,则将children设为undefined
            data[i].children = undefined
          } else {
            // children若不为空数组,则继续 递归调用 本方法
            this.getTreeData(data[i].children, num)
          }
        }
      }
      return data
    },

6、点击编辑时,回显后台数据

    // 添加节点, data为父点节数据
    append (data) {
      this.selectedKeys = []
      this.dialogFormVisible = true
      this.parentCategoryList = this.getTreeData(this.dataList, 2)

      // 回显数据, selectedKeys 为 el-cascader 的 v-model 值
      this.selectedKeys[0] = data.parentCid
      this.selectedKeys[1] = data.catId
    },

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值