vue項目使用vue2-org-tree (避免踩坑)

1.效果圖


image.png

實現(xiàn)方法

1、安裝

# use npm
npm i vue2-org-tree

# use yarn
yarn add vue2-org-tree

2.安裝 loader
npm install -D less-loader less

*:官方文檔引入樣式的時候是導(dǎo)入的 less 文件

3、main.js中引入

import Vue from 'vue'
import Vue2OrgTree from 'vue2-org-tree'

Vue.use(Vue2OrgTree)

// ...

4、組件中使用
template代碼

<vue2-org-tree 
 :data="treeData" 
 collapsable
 :render-content="renderContent"
 @on-expand="onExpand"
 @on-node-click="NodeClick"/>

數(shù)據(jù)

data () {
    return {
      treeData: {
        id: '0',
        label: "NBA季后賽",
        children: [
          {
            id: '1',
            label: "西部球隊",
            children: [
              {
                id: '1-1',
                label: "勇士"
              },
              {
                id: '1-2',
                label: "火箭"
              },
              {
                id: '1-3',
                label: "太陽"
              },
              {
                id: '1-4',
                label: "小牛"
              }
            ]
          },
          {
            id: '2',
            label: "東部球隊",
            children: [
              {
                id: '2-1',
                label: "熱火"
              },
              {
                id: '2-2',
                label: "雄鹿"
              },
              {
                id: '2-3',
                label: "騎士"
              },
              {
                id: '2-4',
                label: "凱爾特人"
              }
            ]
          }
        ]
      }
    }
  },

方法:

created(){
    this.toggleExpand(this.treeData,true);
  },
  methods:{
    collapse(list) {
        list.forEach((child)=> {
          if (child.expand) {
            child.expand = false;
          }
          child.children && this.collapse(child.children);
      });
    },
    onExpand(e,data) {
      console.log(data,'data')
      if ("expand" in data) {
        data.expand = !data.expand;
        if (!data.expand && data.children) {
          this.collapse(data.children);
        }
      } else {
        this.$set(data, "expand", true);
      }
    },
    toggleExpand(data, val) {
        if (Array.isArray(data)) {
            data.forEach((item)=> {
              this.$set(item, "expand", val);
              if (item.children) {
                this.toggleExpand(item.children, val);
              }
            });
        } else {
            this.$set(data, "expand", val);
            if (data.children) {
              this.toggleExpand(data.children, val);
            }
        }
    },
    NodeClick(e,data){
      console.log(e)
        // e 為 event
      console.log(data)
        // 當(dāng)前項的所有詳情 如:id label children
    },
    renderContent(h, data) {
      return (
        <div class="treeItem">{data.label}</div>
      )
    },
  }

注意:一定要在style中引入樣式文件,否則展開收縮按鈕顯示不出來
<style lang="less">
@import '../libs/org-tree.less';
</style>
樣式文件參考碼云

https://gitee.com/hukaicode/vue-org-tree/tree/master/src/styles
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容