日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

解決el-tree數據回顯時子節點部分選中,父節點都全選中的坑

作者:前端開心果 更新時間: 2023-07-31 編程語言

el-tree 在編輯中回顯數據時,有一個bug,就是只要我們回顯的數據中有父節點的 id,不管當前父節點下的子節點是部分選中還是全選中,回顯的效果是該父子節點下的子節點都會全選中,這很顯然不是我們需要的

看大家有用自己的辦法解決,比如有說用 check-strictly 來控制父子互不互相關聯的做法,還有自己手動寫函數來控制父子節點的選中狀態,但是方法多感覺很繁瑣。

我這里用 getNode() 的方法來簡單解決
預計的效果

在這里插入圖片描述

目前實際效果
在這里插入圖片描述
先上代碼看如何實現

template 部分

 <el-tree
   :data="list.data"
   show-checkbox
   node-key="id"
   :props="defaultProps"
   :default-expand-all="list.isExpand"
   v-loading="list.loading"
   ref="tree"
   @check-change="checkChange">
 </el-tree>

js 部分

export default {
  data () {
    return {
      list: {
        data: [],
        loading: false,
        isExpand: true
      },
      defaultProps: {
        children: 'children',
        label: 'name'
      },
      loading:false
    }
  },
  methods: {
    defaultChecked () { // 默認選中
      this.$nextTick(() => {
        const arr = []
        this.menus.forEach(item => {
          if (!this.$refs.tree.getNode(item.id).childNodes || !this.$refs.tree.getNode(item.id).childNodes.length) {
            arr.push(item.id)
          }
        })
        this.$refs.tree.setCheckedKeys(arr)
      })
    },
  }
}

在這里插入圖片描述

解析:this.menus 是從后端獲取回來的數據,getNode() 獲取到當前節點,判斷當前節點是否是葉子節點,是的話存入 arr 數組中,最后使用 setCheckedKeys() 將數據回顯選中,從而實現父級的半選狀態

打印了一下Node 節點
在這里插入圖片描述

原文鏈接:https://blog.csdn.net/qq_38157825/article/details/114932987

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新