Vue-component | 極其簡易Tree列表

日常開發中積累了不少可能對一些開發有幫助的簡單易用的組件,好記性不如爛筆頭,想對過去的一些零零亂亂的東西做一些總結,反省自己的同時也便于思考一些更優的方法,提升下開發思維??????。
代碼傳送門(??感覺有作用的的同學幫忙點下???)

效果截圖

這是一個簡單的樹形列表,可展開收起。


Tree.gif

組件結構

由多層列表嵌套組成。

<ul>
    <li>
        <ul>
            <li>...</li>
         </ul>
    </li>
</ul>

核心代碼

Tree
最頂層結構

<template>
  <ul>
    <item :model="model" />
  </ul>
</template>
<script>
import Item from './Item'
export default {
  name: 'j-tree',
  components: { Item },
  props: {
    model: Object
  }
}
</script>

Item
遞歸調用自己的核心

<template>
  <li>
    <div @click="toggle">
      {{model.title}}
      <span>[{{isOpen?"-":"+"}}]</span>
    </div>
    <ul v-show="isOpen" class="item">
      //    遞歸組件自己本身,要記得加上name,不然找不到自己。
      <item v-for="(item, index) in model.children" :key="index" :model="item" />
    </ul>
  </li>
</template>
<script>
export default {
  name: 'item',
  components: {},
  props: {
    model: Object
  },
  data () {
    return {
      isOpen: false
    }
  },
  methods: {
    toggle () {
      this.isOpen = !this.isOpen
    }
  }
}
</script>

傳入的數據格式

treeData: {
        title: '地球',
        children: [
          {
            title: '人'
          },
          {
            title: '水果',
            children: [
              {
                title: '橘子'
              },
              {
                title: '蘋果'
              }
            ]
          },
          {
            title: '植物',
            children: [
              {
                title: '四君子',
                expand: true,
                children: [
                  {
                    title: '梅'
                  },
                  {
                    title: '蘭'
                  },
                  {
                    title: '竹'
                  }
                ]
              },
              {
                title: '動物',
                children: [
                  {
                    title: '豬??'
                  },
                  {
                    title: '狗'
                  }
                ]
              },
              {
                title: '氣體',
                children: [
                  {
                    title: '空氣',
                    children: [
                      {
                        title: '氧氣'
                      }]
                  }]
              }
            ]
          }
        ]
      }

關鍵點


在這里主要使用的一些技術包括:

技術 概述 備注
遞歸組件 自己調用自己,要記得注明name /
v-for 在這里搭配遞歸,將數據一層一層遍歷展示 /

后續會持續更新其他一些有用的組件提供參考...

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 注意事項: 布局優化;盡量使用include、merge、ViewStub標簽,盡量不存在冗余嵌套及過于復雜布局(...
    HarryXR閱讀 5,260評論 1 19
  • 原文: http://www.cnblogs.com/yezhennan/p/5442031.html UI性能測...
    vb12閱讀 4,366評論 0 9
  • 后知后覺的天天晚間瀏覽手機,他發現安徽血庫告急事宜,才明白媽媽去獻血緣由。加上媽媽告知同學樂樂明天去獻血,遂主動請...
    圍境閱讀 632評論 0 4
  • 每年的新年計劃制定時總是堅定而充滿激情,可是隨著翻過的日歷,新年計劃又是在什么時候忘光的呢?不知道! 現在學習易效...
    依盈閱讀 488評論 7 5