element tree獲取節點的父級目錄


node-key="id" 每個樹節點用來作為唯一標識的屬性,整棵樹應該是唯一的

:expand-on-click-node="true" 是否在點擊節點的時候展開或者收縮節點, 默認值為 true,如果為 false,則只有點箭頭圖標的時候才會展開或者收縮節點。

:data="dataList" 展示數據,綁定dataList

@node-click="handleNodeClick"

  1 <el-tree 
  2     ref="tree"
  3     :data="dataList"
  4     node-key="id"
  5     :props="defaultProps"
  6     @node-click="handleNodeClick"
  7     :expand-on-click-node="true"
  8     >
  9 </el-tree>
 10 
 11 <script>
 12   export default {
 13     data() {
 14       return {
 15         dataList: [{
 16           label: '一級 1',
 17           id: '1'
 18           children: [{
 19             label: '二級 1-1',
 20             id: '11'
 21             children: [{
 22               label: '三級 1-1-1'
 23               id: '111'
 24             }]
 25           }]
 26         }, {
 27           label: '一級 2',
 28           id: '2'
 29           children: [{
 30             label: '二級 2-1',
 31             id: '21'
 32             children: [{
 33               label: '三級 2-1-1',
 34               id: '211'
 35             }]
 36           }, {
 37             label: '二級 2-2',
 38             id: '22'
 39             children: [{
 40               label: '三級 2-2-1',
 41               id: '221'
 42             }]
 43           }]
 44         }, {
 45           label: '一級 3',
 46           id: '3'
 47           children: [{
 48             label: '二級 3-1',
 49             id: '31'
 50             children: [{
 51               label: '三級 3-1-1',
 52               id: '311'
 53             }]
 54           }, {
 55             label: '二級 3-2',
 56             id: '32'
 57             children: [{
 58               label: '三級 3-2-1',
 59               id: '321'
 60             }]
 61           }]
 62         }],
 63         //父級目錄列表
 64         parentMenuList: [],
 65         defaultProps: {
 66           children: 'children',
 67           label: 'label'
 68         }
 69       };
 70     },
 71     methods: {
 72         // 點擊tree的節點,觸發handleNodeClick事件
 73         
 74         handleNodeClick(data, node ,el) {
 75             // 此處可添加點擊事件的相關操作,其中data是樹節點相關數據,node中亦存在樹節點相關數據,另外還存在其parent和children
 76             console.log(data, node);
 77             
 78             // 若node未知,可根據以下方式獲取相關節點的node值
 79             let currentNode = this.$ref.tree.getNode(data)  //該值與handelNodeClick函數參數node相同,ref.緊跟着的名稱為el-tree組件
 80             
 81             
 82             // 獲取對應節點的父級目錄
 83             this.nodeClick(node)
 84             // remove()翻轉的原因是,獲取到的parentMenuList為層級大的在前,層級小的在后,故需要進行翻轉再拼接
 85             let parentMenuList = this.parentMenuList.remove()
 86             this.parentMenuList = parentMenuList
 87             
 88             // 將獲取到的父級目錄列表進行組合輸出,若點擊三級1-1-1得到的結果為  一級 1/二級 1-1/三級 1-1-1
 89             let parentMenu = ''
 90             this.parentMenuList.forEach((item,index)=>{
 91                 if(index !== this.parentMenuList.length-1) {
 92                     parentMenu += item + '/'
 93                 } else {
 94                     parentMenu += item
 95                 }
 96             })
 97             console.log(parentMenu) 
 98             
 99         },
100         // 獲取tree任意節點父級列表
101         nodeClick (node) {
102             if (node.label) {
103                 this.parentMenuList.push(node.label)
104             }
105             //迭代
106             if(node.parent) {
107                 this.nodeClick(node.parent)
108             }
109         },
110     }
111   };
112 </script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM