vue +ant design中树形菜单自定义图标,分段请求子菜单的需求

还是ant design比较强大,最近用了tree的组件,先看实现效果吧
在这里插入图片描述
HTML:

  <a-tree
          :autoExpandParent="true"
          defaultExpandAll
          :treeData="treedata"
          showIcon
          class="main-table"
          @select="handleSelected"
          :loadData="onLoadData"
            >
            <img src="../../assets/case_info.png" alt="" slot="case_info" style="width:0.15rem;height:0.15rem;">
            <img src="../../assets/evidence_list.png" alt="" slot="evidence_list" style="width:0.15rem;height:0.15rem;">
            <img src="../../assets/example.png" alt="" slot="null" style="width:0.15rem;height:0.15rem;">
            <img src="../../assets/sim_card_info.png" alt="" slot="sim_card_info" style="width:0.15rem;height:0.15rem;">
            <img src="../../assets/basic_info.png" alt="" slot="basic_info" style="width:0.15rem;height:0.15rem;">
            </a-tree>
          

注意啊,后端给的数据接口要包括slot里面的值,不然没法对应
在这里插入图片描述
然后我们请求一次父菜单还有还有请求子菜单

mounted(){
        this.getMenuTree()
  },
methods:{
getMenuTree(){
  this.treedata = []
    getMenuTreeTable({id:this.$route.params.sampleId}).then((res) =>{//树形菜单的动态获取数据
        this.treedata=res.data
    })
},
//在这里加setTimeout可以出现loading的效果哦!!!!
onLoadData(treeNode){  //对应组件中 :loadData="onLoadData"来进行请求子菜单
  const _this = this
  return new Promise((resolve) =>{
    if(treeNode.dataRef.children) {
      resolve()  //有了值就会直接渲染
      return 
    }
    let param = {datasetCollectInfoId:this.$route.params.sampleId,pid:treeNode.dataRef.key}
    getChildrenId(param).then((res) =>{   //子菜单的数据接口
      if(res.code== 20000){
        treeNode.dataRef.children = res.data
        _this.treedata = [..._this.treedata]
      }
    })
    resolve()
  })
},

然后我们点击每一个菜单,然后拿到数据传给右侧表格显示,这里需要的是组件中 @select="handleSelected"
methods中写:

   handleSelected(keys, info) {  //点击树形菜单每一列菜单
      console.log("点击文字:", info.node.dataRef.datasetCollectInfoId);
      this.metaTableId = info.node.dataRef.metaTableId
      this.LeafNode = info.node.dataRef.children 
    },

info.node.dataRef 中我们可以拿到到树形菜单每一项的所有值,取到我们想要的值进行传递,这里取到的是id,然后用
watch去监听metaTableId拿取到值去响应表格内容

嘿嘿,要是觉得每次加载树形菜单时间太长,需要加一个loading的效果,可以给个定时器去设置,在加载子菜单的数据的地方
在这里插入图片描述
每次学到新东西,及时去整理,发现,拓展,思考,就会发现其实也不是很难的。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值