关于在vue项目中给a-tree自定义图标

想要自定义图标,其实很简单,用好自定义slot即可,话不多说,看代码

<a-tree
          style="overflow: scroll"
          show-line
          blockNode
          show-icon
          :replaceFields="{
            children: 'children',
            title: 'label',
            key: 'code',
          }"
          expandAction="click"
          :treeData="MBtreeData"
          @rightClick="dialogFormVisible = true"
          @select="change"
        >
          <span style="color: red; fontsize: 12px" slot="A">部</span>
          <span style="color: red; fontsize: 12px" slot="B">子</span>
          <span style="color: red; fontsize: 12px" slot="C">项</span>
          <span style="color: red; fontsize: 12px" slot="D">检</span>
          <span style="color: red; fontsize: 12px" slot="E">报</span>
          <span style="color: red; fontsize: 12px" slot="F">临</span>
          <span style="color: red; fontsize: 12px" slot="G">其他</span>
        </a-tree>

树结构a-tree中,用什么都可以,span  img标签  icon图标等等没有限制,定义好slot即可

接下来是将自定义的slot递归循环进树结构数组      此处我也不一一分装 实现即可

!!!!给树结构的数据中挨个加入slots属性,是与标签中的slot相对应的

// 设置树结构图标
    setIcon(menus) {
      let that = this;
      for (let value of menus) {
        //   判断是不是父级     // 关键 - 判断是否还有子节点
        if (value.children&& value.children.length > 0) {
          //是父级的话递归调用
          that.setIcon(value.children);
          if (value.ordercode == "A") {
            value.slots = { icon: "A" };
          }
          if (value.ordercode == "B") {
            value.slots = { icon: "B" };
          }
          if (value.ordercode == "C") {
            value.slots = { icon: "C" };
          }
          if (value.ordercode == "D") {
            value.slots = { icon: "" };
          }
          if (value.ordercode == "E") {
            value.slots = { icon: "E" };
          }
          if (value.ordercode == "F") {
            value.slots = { icon: "F" };
          }
          if (value.ordercode == "G") {
            value.slots = { icon: "G" };
          }
        } else {
          if (value.ordercode == "A") {
            value.slots = { icon: "A" };
          }
          if (value.ordercode == "B") {
            value.slots = { icon: "B" };
          }
          if (value.ordercode == "C") {
            value.slots = { icon: "C" };
          }
          if (value.ordercode == "D") {
            value.slots = { icon: "" };
          }
          if (value.ordercode == "E") {
            value.slots = { icon: "E" };
          }
          if (value.ordercode == "F") {
            value.slots = { icon: "F" };
          }
          if (value.ordercode == "G") {
            value.slots = { icon: "G" };
          }
        }
      }
      that.treeData = menus;
    },

都准备好了,然后就是初始化渲染了

// 初始化树结构的渲染
    init() {
      post("ml/queryzlk").then((res) => {
        this.MBtreeData = res;
        this.setIcon(this.MBtreeData);
      });

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值