treeSelect多选自定义展示内容

3 篇文章 0 订阅

treeSelect自定义展示内容为“一层title/二层title”格式(react antd4以下,vue1 antdv)

以vue1 antdv为例

tree-checkable可选框

SHOW_PARENT 选择父级展示父节点而不是全部

label-in-value改变value结构从[id],[{value:xxx,label:"xxx"}]

change函数修改label

  • 请求接口拿到treedata数据的时候将每一层里加入longtitle作为后续change修改label的字段
     this.bizScenes = this.bizScenes?.map((item: any) => {
        return {
          ...item,
          value: item.id,
          label: item.name,
          longTitle: item.name,
          children: item.children?.map((item1: any) => {
            return {
              ...item1,
              value: item1.id,
              label: item1.nameChild,
              longTitle: item.name + "/" + item1.nameChild,
            };
          }),
        };
      });
  • change函数进行label修改
  sceneChange(value: any, label: any, extra: any) {
    value?.map((item: any) => {
      extra.allCheckedNodes?.map((item1: any) => {
        if (item.value === item1.node.data.props.value) {
          item.label = item1.node.data.props.longTitle;
        }
      });
    });
  }
  • 展示

全部代码

        <a-tree-select
          :tree-data="bizScenes"
          tree-checkable
          :show-checked-strategy="SHOW_PARENT"
          v-model="value"
          @change="sceneChange"
          label-in-value
        />


     this.bizScenes = this.bizScenes?.map((item: any) => {
        return {
          ...item,
          value: item.id,
          label: item.name,
          longTitle: item.name,
          children: item.children?.map((item1: any) => {
            return {
              ...item1,
              value: item1.id,
              label: item1.nameChild,
              longTitle: item.name + "/" + item1.nameChild,
            };
          }),
        };
      });

    sceneChange(value: any, label: any, extra: any) {
        value?.map((item: any) => {
          extra.allCheckedNodes?.map((item1: any) => {
            if (item.value === item1.node.data.props.value) {
              item.label = item1.node.data.props.longTitle;
            }
          });
        });
      }

注:react antd的话就把对应的api换成官方文档对应的就可以了

回填的话把v-model对应的值的格式写成label-in-value([{value:xxx,label:"xxx"}])的格式就能正确回填

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值